JSP исключение - класс не найден (tomcat) - PullRequest
1 голос
/ 13 ноября 2009

Я настраиваю существующее приложение на новом сервере Tomcat 5.5, подключающемся к базе данных Postgres (работает на Debian Lenny). Когда я получаю к нему доступ, я получаю серию трассировок стека со следующей основной причиной:

java.lang.ClassNotFoundException: java.sql.SQLClientInfoException
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
    java.lang.Class.forName(libgcj.so.90)
    java.lang.Class.initializeClass(libgcj.so.90)
    java.lang.Class.initializeClass(libgcj.so.90)
    org.postgresql.Driver.makeConnection(Driver.java:382)
    org.postgresql.Driver.connect(Driver.java:260)
    java.sql.DriverManager.getConnection(libgcj.so.90)
    jof.DBConnection.getConnection(DBConnection.java:81)
    jof.BeanInterfaceBase.db(BeanInterfaceBase.java:263)
    jof.BeanInterfaceBase.getStatement(BeanInterfaceBase.java:613)
    jof.HelpInterface.findByNaturalId(HelpInterface.java:81)
    jof.HelpInterface.findByNaturalId(HelpInterface.java:128)
    org.apache.jsp.index_jsp.getHelp(index_jsp.java:162)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:369)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    java.lang.reflect.Method.invoke(libgcj.so.90)
    org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
    java.security.AccessController.doPrivileged(libgcj.so.90)
    javax.security.auth.Subject.doAsPrivileged(libgcj.so.90)
    org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
    org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

Чего не хватает?

Ответы [ 2 ]

3 голосов
/ 13 ноября 2009
java.lang.ClassNotFoundException: java.sql.SQLClientInfoException

Чего не хватает?

Если быть точным: упомянутый класс отсутствует в пути к классам во время выполнения. Он должен находиться в пути к классам среды выполнения в виде отдельного файла класса (*.class) или быть упакован в файл JAR (*.jar). В качестве альтернативы вы также можете добавить его фактический путь к пути к классам во время выполнения.

По умолчанию папки Webapp/WEB-INF/lib и Webapp/WEB-INF/classes веб-приложения покрываются путем к классу времени выполнения, равно как и папка Appserver/lib appserver и Java JRE/lib.

Любые сторонние JAR-файлы, специфичные для веб-приложений, должны быть помещены в Webapp/WEB-INF/lib. Любые веб-приложения классы (сервлеты и т. Д.) Должны быть помещены в Webapp/WEB-INF/classes. Любые специфичные для appserver (или webapp-общие) файлы JAR должны быть помещены в Appserver/lib. Папка JRE/lib Java должна быть оставлена ​​нетронутой.

Надеюсь, это поможет.

Редактировать : проблема еще хуже: это действительно класс Java 6. Tomcat, очевидно, работает на Java 5. Просмотрите переменную окружения JAVA_HOME. Он должен по крайней мере указывать на корневую папку установки Java 6 JRE.

2 голосов
/ 13 ноября 2009

Это предположение, но я вижу, что java.sql.SQLClientInfoException - это класс, который был представлен в Java6. Какая версия Java используется для запуска вашего сервера Tomcat? Может быть, вы разрабатываете под Java6, но затем развертываете на Tomcat под управлением Java5?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...