2013-02-15 36 views
0

我不能讓我的web應用程序的任何頁面加載(本地在Tomcat 7.0.2.6),由於這種NoClassDefFound錯誤。我在我的智慧結束試圖找出原因是什麼,這裏是我所知道的:想不通原因NoClassDefFoundError的:閱讀Aspose/PDF /段

我的同事有這個項目在本地(在Tomcat上)和我們的開發服務器(WebLogic)上成功運行。

所以我的代碼是完全一樣,他的我都做了新的下拉從SVN。我已經驗證過我有一個Aspose的共享庫引用(並且所需的.jars在那裏),並且weblogic.xml有一個入口。

我們看到了同樣的錯誤,當最初在WebLogic部署,因爲閱讀Aspose庫被命名爲錯誤,但罰款他的本地Tomcat服務器上運行。

我試圖清理和重建項目沒有影響。

盡我所能,它必須是Tomcat問題,或者可能是Eclipse設置。

有沒有人遇到過類似的情況?有什麼想法來解決這個問題?

回答

0

這可能是你的同事有他的Tomcat實例本身安裝的Java圖書館的。

採取在Tomcat目錄中尋找一些LIB文件夾(我不記得確切的位置,我認爲它改變了基於版本),但類似$ {CATALINE_HOME}/common/lib下

確認他在你的tomcat安裝中沒有不同的JAR文件。

從這個問題:Does Tomcat load the same library file into memory twice if they are in two web apps? 他們顯然存儲在這裏:

Tomcat 6 $CATALINA_HOME/lib 
Tomcat 5 $CATALINA_HOME/common/lib 
+0

我查了一下,我也有和他一樣的.jar。 – Corwin01 2013-02-15 18:38:42

1

你需要做的是確定,如果你用相同的名稱和包裝的另一個類碰撞的第一件事。要做到這一點最簡單的方法是在cygwin/Linux控制檯,這個shell腳本保存到文件中說,findjar

find "$1" -name "*.jar" -exec sh -c 'jar -tf {}|grep -H --label {} '$2'' \; 

把它放在你的路徑,並導航到服務器實例的根和運行像腳本這

findjar . yourclass 

請注意期間,不要忘記它。如果您的項目中有多個同名的類,這將返回。

一旦你確定該項目是乾淨的,只有一個類的拷貝,我會嘗試實際添加你的共享庫文件夾到WebSphere服務器實例JVM參數。要做到這一點:

  1. 進入到管理中,單擊服務器
  2. 打開服務器類型,點擊的WebSphere Application Server
  3. 你應該看到您的服務器列出,單擊它
  4. 在右邊您將看到一個「服務器基礎結構」部分,下面是「Java和進程管理」小節
  5. 打開該部分並單擊「Process Definition」
  6. 在進程定義屏幕上顯示anot她的右手欄目。點擊「Java虛擬機」
  7. 是的,終於我們在正確的屏幕上,這裏有一個終點在望,我保證
  8. 在虛擬機頁面上,有一個大的文本字段標記爲「Classpath」你需要做的的共享庫文件夾

其奇數和沒有意義的要做的是輸入完整的路徑,但我不得不這樣做,在過去,讓我的代碼,看看屬性文件在共享資源中。

+0

其實我沒有任何websphere應用服務器。顯然不知何故,應用程序沒有看到這些罐子,儘管他們在共享庫參考。我欺騙了,並將它們轉儲到我的WEB-INF \ lib中。好吧。 – Corwin01 2013-02-15 19:35:39

+0

月食很有趣。這就是爲什麼我總是從命令行進行部署和編譯的原因。我唯一使用eclipse的只是編輯文件。 – scphantm 2013-02-15 21:47:15