NoClassDefFoundError при попытке ссылки на внешние файлы JAR - PullRequest
1 голос
/ 08 февраля 2011

У меня есть несколько сторонних jar-файлов, на которые я хочу сослаться в моем веб-приложении tomcat.Я добавил эту строку в catalina.properties:

shared.loader = / home / ollie / dev / java / googleapi_samples / gdata / java / lib / *. Jar

, но я все ещеполучаю эту ошибку:

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-core-1.0.jar, который находится в каталоге:

/home / ollie / dev / java / googleapi_samples / gdata / java / lib

Я отскочил от tomcat после изменения catalina.properties.

Обновление 1: я попытался скопировать gdata-core-1.0Файл .jar в / var / lib / tomcat6 / webapp / examples / WEB-INF / lib в качестве теста, но это также не устранило проблему.

Обновление 2: на самом деле работает, когда я копируюJAR-файл напрямую в каталог WEB-INF / lib.Возникла проблема с разрешениями, которую мне пришлось решить.Но он все еще не работает, когда я использую настройку shared.loader.Я подтвердил, что путь правильный.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Я не уверен в этом, но есть две возможные причины:

  1. Существует проблема с правами доступа к файлу в пути, указанном в shared.loader, вероятно, такая же, как у васимел при работе с /WEB-INF/lib.

  2. Вы не редактируете файл catalina.properties экземпляра Tomcat, который, по вашему мнению, используете.Например, если вы запускаете Tomcat из Eclipse, вам нужно убедиться, что вы настроили Eclipse для принятия Tomcat вместо использования метаданных рабочей области (где Eclispe фактически работает на основе копии файлов конфигурации Tomcat).Для этого отмените / удалите все проекты, дважды щелкните по записи Tomcat и выберите Использовать установку Tomcat в Расположение сервера раздел.Затем будут использованы файлы конфигурации в собственной папке Tomcat /conf.В противном случае вам нужно отредактировать его в Servers проекте рабочей области Eclipse.

0 голосов
/ 09 февраля 2011

Можете ли вы попробовать префикс пути с file://?

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