2014-05-20 99 views
1

當我點擊一個特定的單選按鈕,它應該取一個servlet,但它是不是能找到上面的類。我應該在哪裏包含jar文件的類路徑?還什麼是必須存在的jar文件 的tomcat-util.jar 卡塔利娜 - ant.jar文件 公地編解碼器1.6.jar opencsv-2.1-1.0.0.jar xerces_2_6_2.jarjava.lang.NoClassDefFoundError:組織/阿帕奇/ tomcat的/ UTIL /編解碼器/二進制/ Base64編碼

應該我將它們包含在META-INF的manifest.mf中? 請幫助我,因爲我現在已經很久了。

+1

不幸的是,NoClassDefFoundError是一個「垃圾」異常,可能會出現十幾種不同的原因。大多數是圍繞着讓你的jar文件被廢棄(把錯誤的版本組合放在一起),但還有其他的原因。 –

+0

如果你使用tomcat,你應該把tomcat的lib文件夾中的罰款。 – Jens

回答

1

謝謝所有的建議。我只知道項目中的.classpath沒有jar文件的位置。

<classpathentry kind="lib" path="WebContent/WEB-INF/lib/catalina-ant.jar"/> 
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tomcat-util.jar"/> 
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-codec-1.6.jar"/> 
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/opencsv-2.1-1.0.0.jar"/> 
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xerces-2_6_2.jar"/> 

我添加了上述內容,它解決了我的問題。非常感謝你:)

0

java.lang.NoClassDefFoundError實際上是一個「垃圾異常」,當您的代碼用一個版本的類進行編譯時,通常會引發「垃圾異常」,並且在運行時類加載器會找到不同的不兼容版本。 「通常」是那裏的術語。靜態初始化器的失敗也是這個問題的一個常見原因。

你或許可以解決這個問題通過讓你使用的任何JAR編譯你的東西到WEB-INF/lib中你的webapp的目錄。如果您使用Gradle或Maven,我相信如果您將依賴關係聲明爲編譯依賴關係,他們會直接執行此操作。

相關問題