2009-11-13 191 views
1

我在連接到Postgres數據庫(在Debian Lenny上運行)的新Tomcat 5.5服務器上設置現有應用程序。當我訪問它時,我得到一系列堆棧跟蹤,其原因如下:JSP異常 - 未找到類(tomcat)

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) 

缺少什麼?

回答

3
java.lang.ClassNotFoundException: java.sql.SQLClientInfoException 

缺少了什麼?

確切地說:運行時類路徑中缺少上述類。它必須在運行時類路徑中作爲獨立的類文件(*.class)或打包在JAR文件(*.jar)中。或者,您也可以將其實際路徑添加到運行時類路徑。

默認情況下,Web應用程序的Webapp/WEB-INF/libWebapp/WEB-INF/classes文件夾運行時類路徑包括在內,因爲是應用程序服務器的Appserver/lib文件夾和Java的JRE/lib

任何第三方的特定於webapp的JAR文件都應該放在Webapp/WEB-INF/lib之內。任何webapp特定的類(servlets等)應該被放置在Webapp/WEB-INF/classes。任何特定應用程序服務器(或webapp-common)JAR文件都應該放置在Appserver/lib中。 Java的JRE/lib文件夾必須保持不變。

希望這會有所幫助。

編輯:實際的問題更糟糕:這確實是一個Java 6 only類。 Tomcat顯然運行在Java 5上。查看你的JAVA_HOME環境變量。它至少必須指向Java 6 JRE的根安裝文件夾。

+0

謝謝,這非常有幫助。切換運行時確實解決了問題。 – user83358 2009-11-18 14:07:40

+0

不客氣。 – BalusC 2009-11-18 14:08:45

2

這是一個猜測,但我看到java.sql.SQLClientInfoException的是,在推出的Java6一類。正在使用什麼版本的Java來啓動Tomcat服務器?也許你正在Java6下開發,但隨後部署到運行Java5的Tomcat?