2011-01-14 76 views
6

我試圖尋找可能幫助我的帖子,無法找到任何。當文件存在時,java.lang.NoClassDefFoundError

我正在部署一個耳朵到JBoss4服務器,並且自從添加了一個新項目後,我開始遇到這個問題。

這個新項目被定義爲eclipse中的Java項目,並且EAR項目有一個EJB項目,它擁有新的Java項目作爲其依賴項目之一 - 如果通過eclipse在本地部署JBoss,則沒有問題並且一切順利

但是,當在測試環境(eclipse外部)中部署到JBoss時,在新的Java項目中定義的某個類中不斷收到java.lang.NoClassDefFoundError。我看了一下EAR文件來到jar(EJB項目),然後在jar裏面,我可以看到目錄結構以及新Java項目中的所有類文件,也就是說。它所投訴的類就在EAR-> JAR中,並匹配它正在尋找的確切結構。

我迷失在我還能看到的東西上。

任何指針非常感謝!

謝謝

+0

我試着一切,它仍然給我同樣的例外 – 2011-01-14 15:52:29

+0

我忘了回覆此主題 - 作爲更新:我發現問題是什麼,這是非常愚蠢的,在這個過程中的某個點,我改名爲包名字符大寫。例如。從軟件包名稱到軟件包名稱 - 在這個過程中的某個地方,一些類文件仍然使用舊名稱(非大寫)引用它,因此NoClassDefFoundError – 2011-03-09 15:04:27

回答

6

如果某些類的編譯方式不匹配,您經常會遇到此錯誤。例如,如果您在未設置java合規性級別的情況下編譯JDK的更高版本中的某些類,並且您正在使用較早版本運行它。

我的建議是檢查與運行JBoss的JDK,然後檢查你如何編譯你的類

0

檢查你的耳朵文件。像這樣的結構?

myapp.ear 
|+ META-INF 
    |+ applications.xml and jboss-app.xml 
|+ myapp.war 
    |+ web pages and JSP /JSF pages 
    |+ WEB-INF 
     |+ web.xml, jboss-web.xml, faces-config.xml etc. 
     |+ lib 
     |+ tag library JARs 
     |+ classes 
     |+ servlets and other classes used by web pages 
|+ myapp.jar 
    |+ EJB3 bean classes 
    |+ META-INF 
     |+ ejb-jar.xml and persistence.xml 
|+ lib 
    |+ Library JARs for the EAR 

如果沒有,你應該重新包裝你的耳朵文件。

+0

這就好像結構是這樣的,儘管在EJB jar中我有persistence.xml而不是ejb-jar.xml – 2011-01-14 15:51:51

0

查看屬性「班級路徑:」在META-INF/MANIFEST.MF

+0

類路徑爲空 – 2011-01-14 15:49:48

1

這也可能是由於類加載器的隔離問題,如果你有多個戰爭/耳文件

1

我即使代碼編譯良好,在運行時也會出現類似JBoss 4的問題:ClassNotFoundException和NoClassDefFoundError。我花了4個小時才找出原因。

我的項目的BuildPath是好的,問題實際上是在JBoss的ClassPath中。 我通過這樣做來解決它:JBoss 4.2 RunTime服務器>打開啓動配置>編輯配置> ClassPath>添加JAR和項目鏈接到JBoss與「添加JARs」/「添加項目」。

的Eclipse知道在罈子裏的相關項目得益於構建路徑的類和,所以沒有在IDE中沒有錯誤,但JBoss服務器不知道在哪裏可以找到這些類...

相關問題