无法在java的其他项目中访问方法

时间:2015-02-07 08:20:51

标签: java jar java-package

我创建了一个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();

它会出现这种错误; 令牌上的语法错误"显示",此令牌后预期的标识符。

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

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

4 个答案:

答案 0 :(得分:3)

你不能像这样在类声明中调用一个方法。您可以在类声明中声明 fields ,但方法调用(除了用于字段初始化器的调用)必须在方法或构造函数中。例如:

import tfimvalidation.ValidateToken;

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

答案 1 :(得分:1)

您收到编译时错误的原因是,您在token.display();中调用class body,而不是在方法或其他code block内。你不能这样做。最不可能的变化是:

转到以下声明:

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

进入这样的方法,

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

其他选项

1)Init Block

{
     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内的语句时,它将立即被调用类加载到内存中,但我认为您希望重用Object以进行进一步处理,因此我建议您将这些行保留在main Method

答案 2 :(得分:0)

从main /任何其他方法调用您的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();
    }

}   

如果它是一个说返回类型为int的方法,你可以做类似的事情

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

答案 3 :(得分: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
       }
    }   

首先,你要在类中调用display函数,而不是在java中不允许的Main类函数 你在jar中的方法是非静态的,所以你必须在创建它的对象后调用它。

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

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

在你调用jar函数的类中

ValidateToken.display();

注意:还要导入包。