2011-02-08 101 views
1

我想在我的tomcat web應用程序中引用一些第三方jar文件。我加入這行catalina.properties:嘗試引用外部jar文件時出現NoClassDefFoundError

shared.loader = /家庭/奧利的/ dev/JAVA/googleapi_samples/GDATA/JAVA/lib目錄/ *罐子

但我仍然收到此錯誤:

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/google/gdata/util/ServiceException 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

我驗證了com.google.gdata.util.ServiceException在GDATA核-1.0.jar文件,該文件是在目錄:

/家庭/奧利的/ dev/JAVA/googleapi_samples/gdata/java/lib

我修改了catalina.properties之後,我做了反彈tomcat。

更新1: 我試過GDATA核-1.0.jar文件複製到 的/ var/lib中/ tomcat6中/ web應用/例子/ WEB-INF/lib目錄 作爲測試,但沒有解決問題無論是。

更新2: 當我將jar文件直接複製到WEB-INF/lib目錄中時,它確實有效。有一個權限問題,我必須解決。但是當我使用shared.loader設置時,它仍然不起作用。我重新確認道路是正確的。

+1

可能是許可問題。檢查哪個用戶Tomcat服務正在運行。嘗試chmod授予權限。 – Madhu 2011-02-09 06:00:24

回答

2

我不知道這一個,但有兩個可能的原因:

  1. 有作爲shared.loader規定,可能和你一樣擺弄時,曾在路徑下的文件權限問題與/WEB-INF/lib

  2. 您未編輯您認爲正在使用的Tomcat實例的catalina.properties文件。例如,如果您從Eclipse內部運行Tomcat,則需要確保您配置了Eclipse來接管Tomcat,而不是使用工作區元數據(其中Eclispe實際上基於Tomcat conf文件的副本運行)。爲此,取消部署/刪除所有項目,雙擊Tomcat條目並選擇使用Tomcat安裝服務器位置部分。然後將使用Tomcat自己的/conf文件夾中的配置文件。否則,您需要在Eclipse工作區的Servers項目中對其進行編輯。

+0

這是一個權限問題。我只打開了jar文件和父目錄的權限。我需要爲路徑中的每個目錄打開tomcat用戶的權限。 – opike 2011-02-10 18:25:02

0

你可以嘗試用file://加上前綴的路徑嗎?

shared.loader=file:///home/ollie/dev/java/googleapi_samples/gdata/java/lib/*.jar 
+0

根據tomcat文檔,只有在指向單個jar文件時才使用url格式(file:/// ...),我也嘗試過使用相同的結果。 – opike 2011-02-10 17:58:10

相關問題