Ubuntu的Tomcat7抛出java.lang.ClassNotFoundException:o

2019-07-19 07:42发布

我试图建立一个JDBC DataSource到Tomcat 7 Ubuntu下的12.x,所以我增加了以下内容context.xml文件:

<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource"
    maxActive="5" maxIdle="2" maxWait="5000"
    driverClassName="org.postgresql.Driver" username="usr" password="***" url="jdbc:postgresql://localhost:5432/db" />

很显然,使用权和测试的数据库用户ID和密码。 当我重新启动Tomcat,我得到这个错误:

Feb 05, 2013 1:10:01 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]

我用Google搜索,发现了JDBC驱动程序必须被复制到$ CATALINA_HOME / lib文件夹,所以我复制PostgreSQL的-9.2-1000.jdbc4.jar到/ usr /共享/ tomcat7 / lib下,但它并没有帮助。 我试着将文件复制到其他位置,具有相同的结果。

另一种尝试是改变Tomcat的dbcp.jar符号链接在/ usr /股从../../java/tomcat-dbcp-7.0.30.jar / tomcat7 / lib添加到../../java/tomcat- dbcp.jar。 唯一的变化是我唯一的一个警告而不是四个,但数据源也不起作用。

Java版本:

jdoe@sever:~$ java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.4) (7u9-2.3.4-0ubuntu1.12.10.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

任何提示,非常欢迎。

干杯。

Answer 1:

图书馆tomcat-dbcp-7.0.30.jar从库已损坏。

其替换为:

sudo wget -O /usr/share/java/tomcat-dbcp-7.0.30.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar



Answer 2:

原因是在Tomcat7 Ubuntu的编译/包装过程中的问题。 如果我理解正确的问题,Apache生成二进制文件的tomcat-dbcp.jar,而Ubuntu的只是从源代码构建软件包。 Ubuntu项目最终需要改变Java包名,这往往会干扰我们这些可怜的用户。 血淋淋的细节可以在发现Ubuntu的问题清单 。

我找到了解决办法是,当我定义资源命名数据源工厂。 在一个案例中,我有一个包含META-INF / context.xml文件:

<Resource name="jdbc/myDataSource"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/myDatabase"
    username="username" password="password"
    validationQuery="SELECT COUNT(*) FROM MY_TABLE"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory" />

关键的要素是“工厂”的声明,它覆盖了内置的默认。

在我们的生产机器,该资源在server.xml文件的GlobalNamingResources元素定义。 指定的工厂只需要在Ubuntu系统。



Answer 3:

我对CentOS的同样的问题。 我被从下载网站的tomcat的新副本arounbd这一点,并上传Tomcat的dbcp.jar我的在线服务器lib下,重启服务器:)



Answer 4:

我有同样的问题在Fedora 20和Tomcat 7.0.55。 我在文件的路径和文件名7.0.55取代7.0.30,这为我工作。 不知道为什么,但该文件已被完全从YUM缺少安装Tomcat的7不能使用数据库没有它。



Answer 5:

这做到了。

确保如果Tomcat的DBCP-7.0.30.jar文件没有下面的大小,那么它可能已损坏,您可能需要通过sudo wget命令上面来取代它。

-rw-R - R-- 1根根235411 2013年5月1日Tomcat的DBCP-7.0.30.jar

lrwxrwxrwx 1根根部22 2013年1月10日Tomcat的dbcp.jar - > Tomcat的DBCP-7.0.30.jar



文章来源: Ubuntu Tomcat7 java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory