2015-02-07 99 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

相關問題