无法访问java的其他项目中的方法
我已经创建了一个具有它的正文的类的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.
}
之所以会出现编译时错误,是因为您在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
从主/任何其他方法调用,而不是调用仿佛声明场像你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
}
这里是没有关系的入口点。 – 2015-02-07 08:26:45
您需要从另一个对象的另一个方法或构造函数中调用void方法。 – SMA 2015-02-07 08:28:00
你不能只是在类声明中调用一个方法。您可以在类声明中声明字段,但方法调用(除了用于字段初始值设定项的调用)必须位于方法或构造函数中。例如:
import tfimvalidation.ValidateToken;
public class Test {
public static void main(String[] args) {
ValidateToken token = new ValidateToken();
token.display();
}
}
这不是我在上面的代码中显示的静态方法 – 2015-02-07 08:27:18
@ user3526172:不,因此如果它是一个静态方法,只使用类型名称,则不应将其称为*。这是我的观点。你的代码有两个问题,你需要理解它们。 – 2015-02-07 08:27:59
@ user3526172:哦,现在我看到你已经改变了这个问题,所以它*不会那样称呼它。为我们提供代码然后改变代码有什么意义? – 2015-02-07 08:29:38
你在做什么
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();
注:也导入包。
“你应该做的”代码仍然不能编译。 – 2015-02-07 08:42:53
@singhakash因为你正在运行的方法调用不在方法内,而是在类体中。这将失败。 – showp1984 2015-02-07 08:47:14
@JonSkeet和show-p1984谢谢指出我的错误。更新我的回答 – silentprogrammer 2015-02-07 08:51:16
你根本没有显示代码* *显示。请提供一个简短但完整的示例。 – 2015-02-07 08:22:06
请在您的问题中添加更多代码,特别是'validateToken.display();'调用的代码。 – Mehraban 2015-02-07 08:22:51
do validateToken.display(); v小写 – silentprogrammer 2015-02-07 08:24:43