2015-02-07 74 views
-3

我已经创建了一个具有它的正文的类的Java项目。无法访问java的其他项目中的方法

package tfimvalidation; 

public class ValidateToken { 
    public void display() 
    { 
     System.out.println("Yor package imprort succesfully"); 
    } 
} 

这是现在的java项目我已经创建了该项目的jar文件,并将其添加到其他我的动态web项目中。

有我可以访问ValidateToken类和包用下面的语句

ValidateToken validateToken = new ValidateToken(); 

,但我不能访问validateToken.display();

它给这种类型的错误; 令牌“display”上的语法错误,此令牌之后的标识符。

这是第二个项目的代码,我使用jar的第一个项目。 import tfimvalidation.ValidateToken;

public class Main 
{ 
    ValidateToken validateToken=new ValidateToken(); 
    validateToken.display(); //Here gives above shown error. 
} 
+1

你根本没有显示代码* *显示。请提供一个简短但完整的示例。 – 2015-02-07 08:22:06

+1

请在您的问题中添加更多代码,特别是'validateToken.display();'调用的代码。 – Mehraban 2015-02-07 08:22:51

+0

do validateToken.display(); v小写 – silentprogrammer 2015-02-07 08:24:43

回答

1

之所以会出现编译时错误,是因为您在class body中调用token.display();,而不是在方法或其他code block中。你不能那样做。尽可能少的变化将是:

移下面的语句:

ValidateToken token = new ValidateToken(); 
    token.display(); 

进入这样的方法,

public static void main(String[] args) { 
     ValidateToken token = new ValidateToken(); 
     token.display(); 
    } 

其他选项

1)初始化模块

{ 
    ValidateToken token = new ValidateToken(); 
     token.display(); 
} 

2)内部构造

 Main(){ 
ValidateToken token = new ValidateToken(); 
      token.display(); 

    } 

3)静态块

 static { 
ValidateToken token = new ValidateToken(); 
      token.display(); 
     } 

当你把其他的这些说法比你main method比任何你需要创建新的对象,这样Init Block or Constructor will run如果它在static block之内,它将在Class载入内存时立即被调用,但是我认为你想重用Object为进一步的过程也所以我建议你保持这些线在你的main Method

0

从主/任何其他方法调用,而不是调用仿佛声明场像你void类型的方法:

public class Main 
{ 
    public static void main(String args[]) {//main is the entry point 
     ValidateToken validateToken=new ValidateToken(); 
     validateToken.display(); 
    } 
} 

或者

public class Main 
{ 
    ValidateToken validateToken=new ValidateToken(); 
    public void myMethod() { 
     validateToken.display(); 
    } 
} 

或者

public class Main 
{ 
    ValidateToken validateToken; 
    public Main() { 
     validateToken=new ValidateToken(); 
     validateToken.display(); 
    } 

} 

如果它是一种说回报率为typ的方法e作为整数,你可以做一些像

public class Main 
{ 
    ValidateToken validateToken=new ValidateToken(); 
    int myint = validateToken.display();//then of course method name would been different 
} 
+0

这里是没有关系的入口点。 – 2015-02-07 08:26:45

+0

您需要从另一个对象的另一个方法或构造函数中调用void方法。 – SMA 2015-02-07 08:28:00

3

你不能只是在类声明中调用一个方法。您可以在类声明中声明字段,但方法调用(除了用于字段初始值设定项的调用)必须位于方法或构造函数中。例如:

import tfimvalidation.ValidateToken; 

public class Test { 
    public static void main(String[] args) { 
     ValidateToken token = new ValidateToken(); 
     token.display(); 
    } 
} 
+0

这不是我在上面的代码中显示的静态方法 – 2015-02-07 08:27:18

+1

@ user3526172:不,因此如果它是一个静态方法,只使用类型名称,则不应将其称为*。这是我的观点。你的代码有两个问题,你需要理解它们。 – 2015-02-07 08:27:59

+3

@ user3526172:哦,现在我看到你已经改变了这个问题,所以它*不会那样称呼它。为我们提供代码然后改变代码有什么意义? – 2015-02-07 08:29:38

0

你在做什么

public class Main 
{ 
    ValidateToken validateToken=new ValidateToken(); 
    ValidateToken.display(); //Here gives above shown error. 
} 

你应该做的

public class Main 
    { 
     //call this function from main 
     public void function(){ 
     ValidateToken validateToken=new ValidateToken(); 
     validateToken.display(); // here v in lowercase 
     } 
    } 

首先,你在呼唤显示功能里面有什么类,但不是在main类函数那不是在允许的java second 你在jar中的方法是非静态的,所以你必须在创建它的对象后调用它。

如果你想调用display();与类名做 在你罐子

public static void display() 
    { 
     System.out.println("Yor package imprort succesfully"); 
    } 

在课堂,你叫罐子的功能

ValidateToken.display(); 

注:也导入包。

+0

“你应该做的”代码仍然不能编译。 – 2015-02-07 08:42:53

+0

@singhakash因为你正在运行的方法调用不在方法内,而是在类体中。这将失败。 – showp1984 2015-02-07 08:47:14

+0

@JonSkeet和show-p1984谢谢指出我的错误。更新我的回答 – silentprogrammer 2015-02-07 08:51:16

相关问题