Jsp javax.naming.NamingException:无法创建资源工厂实例

Jsp javax.naming.NamingException:无法创建资源工厂实例,jsp,tomcat,Jsp,Tomcat,首先,我不是Java开发人员。我只需要获得一个连接到postgres数据库并检索一些信息的简单jsp示例 我让它在本地环境上运行,但当我尝试在生产服务器(ApacheTomcat6.0.29)上运行时,它就是不起作用。页面显示以下异常: org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSo

首先,我不是Java开发人员。我只需要获得一个连接到postgres数据库并检索一些信息的简单jsp示例

我让它在本地环境上运行,但当我尝试在生产服务器(ApacheTomcat6.0.29)上运行时,它就是不起作用。页面显示以下异常:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/postgres"
    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)
我注意到在重新加载应用程序时,catalina.out显示了以下问题:

Aug 23, 2011 2:21:07 PM org.apache.catalina.core.NamingContextListener addResource
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
在WEB-INF/lib中,我有以下文件:

# ls -lh
total 1.3M
-rwxr-xr-x 1 tomcat tomcat  17K Aug 23 14:15 jstl.jar
-rwxr-xr-x 1 tomcat tomcat 160K Mar  5  2007 naming-factory-dbcp.jar
-rwxr-xr-x 1 tomcat tomcat 528K Aug 23 14:18 postgresql-9.0-801.jdbc4.jar
-rwxr-xr-x 1 tomcat tomcat 313K Aug 23 14:16 standard.jar
-rwxr-xr-x 1 tomcat tomcat 248K Aug 22 22:18 tomcat-dbcp.jar
我试着在谷歌上搜索这个问题,但所有的解决方案都提到了已经存在的naming-factory-dbcp.jar。你知道我该怎么做吗

谢谢

编辑

这是我的tomcat库:

-rw-r--r-- 1 tomcat nobody  11K Jun  8  2009 lib/annotations-api.jar
-rw-r--r-- 1 tomcat nobody  49K Jun  8  2009 lib/catalina-ant.jar
-rw-r--r-- 1 tomcat nobody 121K Jun  8  2009 lib/catalina-ha.jar
-rw-r--r-- 1 tomcat nobody 1.1M Jun  8  2009 lib/catalina.jar
-rw-r--r-- 1 tomcat nobody 225K Jun  8  2009 lib/catalina-tribes.jar
-rw-r--r-- 1 tomcat nobody  28K Jun  8  2009 lib/el-api.jar
-rw-r--r-- 1 tomcat nobody 101K Jun  8  2009 lib/jasper-el.jar
-rw-r--r-- 1 tomcat nobody 501K Jun  8  2009 lib/jasper.jar
-rw-r--r-- 1 tomcat nobody 1.4M Jun  8  2009 lib/jasper-jdt.jar
-rw-r--r-- 1 tomcat nobody  75K Jun  8  2009 lib/jsp-api.jar
-rw-r--r-- 1 tomcat nobody  86K Jun  8  2009 lib/servlet-api.jar
-rw-r--r-- 1 tomcat nobody 732K Jun  8  2009 lib/tomcat-coyote.jar
-rw-r--r-- 1 tomcat nobody 193K Jun  8  2009 lib/tomcat-dbcp.jar
-rw-r--r-- 1 tomcat nobody  65K Jun  8  2009 lib/tomcat-i18n-es.jar
-rw-r--r-- 1 tomcat nobody  43K Jun  8  2009 lib/tomcat-i18n-fr.jar
-rw-r--r-- 1 tomcat nobody  48K Jun  8  2009 lib/tomcat-i18n-ja.jar

dbcp
类应该已经在
tomcat/lib
中可用。没有必要在WAR文件中包含then-如果使用错误的版本,可能会导致类加载器不适。尝试从WEB-INF/lib目录中删除
…dbcp.jar
文件,将
postgres…jar
放入
tomcat/lib
并重新启动tomcat。

您可能没有以正确的方式初始化jdbc/postgres驱动程序。请检查语法,并检查项目类路径中是否加载了所需的库。正确的方法是
jdbc:postgresql://server_name
很好,您包括了
Tomcat/lib的列表。但home回答的关键点是,您不应该在webapp的
/WEB-INF/lib
中包含特定于服务器的库。它使webapp无法移植到不同品牌/版本的服务器。这将导致类路径问题。您是否从
/WEB-INF/lib
中删除了它们?
Tomcat/lib
文件夹应保持不变。最高级时,您将JDBC驱动程序放在其中,但绝对不要更改或删除Tomcat自己的库。@Rakesh您好,它看起来是正确的。同一个应用程序可以在我的本地主机上运行,但不能在生产服务器上运行。@BalucC是的,刚刚从我的应用程序库中删除了naming-factory-dbcp.jar和tomcat-dbcp.jar。但是我还是遇到了同样的错误,我试图从中删除dbcp.jar文件,但是没有成功,同样的错误。我编辑了我的问题,以显示tomcat的lib文件夹内容。因此,您的代码在本地环境中工作,但在服务器上不工作,对吗?对。不同之处在于,在本地环境中,我运行的是版本6.0.33。好的,也许您在本地环境中修改了一些其他文件,但不记得在服务器上更新这些文件,例如
context.xml
?再次查看手册,可能您遗漏了一些内容: