2016-01-21 150 views
0

根據要求,我有類的名稱,我需要檢查這個類的名稱是否存在於特定的包中。這裏是我的項目結構:如何檢查一個類是否存在於java項目中?

app/entities/ <Classes> 
app/contracts/CheckClass.java 

我寫在CheckClass.java下面的代碼,並在文件中獲取classNotFoundException。這是我的以下代碼:

public boolean isClass(String className) { 
    try { 
     Class.forName(className.trim()); 
     return true; 
    } catch (ClassNotFoundException e) { 
     return false; 
    } 
} 

每次我得到ClassNotFoundException。我檢查了傳遞正確類名的className字符串。是否因爲包裝不同?

+0

這是一個Android應用嗎?一個JEE應用程序? Spring應用程序?一個OSGi應用程序? Classloaders在各種環境中差異很大。 – raulk

+0

@raulk這是玩框架應用程序(Java-JEEE)app –

+0

您的className應該是完全合格的類名稱。像java.lang.String一樣。否則,它會看到相同的包。 –

回答

2

你的類名必​​須是完全合格的,看到Class#forName(String)

例如,下面的代碼片段返回運行Class描述符命名java.lang.Thread類:

Class t = Class.forName("java.lang.Thread")

您的情況:app.contracts.CheckClass

0

Javadoc

參數:

的className - 所需類的完全限定名。

全限定類名的格式爲package.class。一個例子是java.lang.System。總是看看Javadoc。

根據你的問題,「我需要檢查這個類的名稱是否存在於特定的包中」 - 我將添加一個if語句來檢查className是否以包字符串開頭。

相關問題