无法访问 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
中
我已经创建了一个 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