2010-06-04 67 views

回答

2

JVM按照jar和目錄在類路徑中的順序尋找類。

對於應用程序服務器等要小心,因爲它們傾向於替換類加載器,在這種情況下可能會有所不同。

0

這是不可預測的。

避免在類路徑中使用多個版本的jar。如果您被應用程序服務器強制執行,它通常會提供一個配置來選擇捆綁應用程序和特定於應用程序的庫。

如果您需要更復雜的東西,請看OSGi - 它允許您在同一運行時使用多個版本。

2

如果可以,將-verbose標誌添加到java啓動命令行中,這將打印到stdout加載哪些類以及來自哪個源。輸出如下:

[Loaded javax.xml.transform.stream.StreamResult from C:\Program Files\Java\jre6\lib\rt.jar] 

如果將輸出重定向到文件中,則可以更輕鬆地解析或搜索所需的信息。

0

有點高的水平,我不知道你使用Spring,但如果你是 - 它有一個非常有用的工具類所及在這種情況下:

PathMatchingResourcePatternResolver查找資源(文件) - 相對於classpath/web app root/file system /等 如果您要求它查找找到您正在查找的類的文件,它將在所有類路徑條目中找到它。我使用這樣的(通常是在一些調試器的eval /表):

Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:your/package/YourClassName.class"); 

**這不會告訴你哪個類是使用的代碼,但它可能會幫助你的情況下,準確找出問題你不確定課程來自哪裏。

相關問題