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

Cannot access method in other project of java

我已经创建了一个 java 项目,其正文如下 class。

package tfimvalidation;

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

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

我可以访问 ValidateToken class 并使用以下语句打包

ValidateToken validateToken = new ValidateToken();

但我无法访问 validateToken.display();

它给出了这种类型的错误; 令牌语法错误 "display",此令牌后应有标识符。

这是第二个项目的代码,我在其中使用了第一个项目的 jar。 导入 tfimvalidation.ValidateToken;

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

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

}   

如果它是一个 return 类型为 int 的方法,你可以做类似

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

您不能像那样在 class 声明中调用方法。您可以在 class 声明中声明 fields,但方法调用(用于字段初始值设定项的除外)必须在方法或构造函数中。例如:

import tfimvalidation.ValidateToken;

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

你在做什么

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
       }
    }   

首先,您在 class 中调用显示函数,但不在主 class 函数中调用,这在 java 中是不允许的 您在 jar 中的方法是非静态的,因此您必须在创建其对象后调用它。

万一你想调用display();用 class 名字做 在你的罐子里

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

在class你调用jar函数的地方

ValidateToken.display();

注意:还要导入包。

你得到编译时错误的原因是,你在 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 加载到内存中,但我认为你也想重用对象进行进一步处理,所以我建议你将这些行保留在你的 main Method