java - 将 jar 添加到 Tomcat 服务安装的 lib 文件夹后出现 ClassNotFoundException

标签 java class jar tomcat7

我正在尝试更新网络应用程序以使用 DBCP。本地运行良好(Windows 安装上的典型 Tomcat)。但是,在 DEV 服务器(EC2 LINUX AMI;Tomcat 即服务)上,我得到以下内容

Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

我已将其缩小(我认为)到最初没有 tomcat-jdbc.ja/lib 文件夹。

我已经添加了这个 jar,并使用以下命令重新启动了 Tomcat 实例......

sudo service tomcat7 restart

但是,我仍然得到相同的 ClassNotFoundException。如何让 Tomcat 服务识别 tomcat-dbcp.jar

编辑 - 这是运行 sudo service tomcat7 start

后的堆栈跟踪
Jan 20, 2014 5:30:35 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/java/tomcat7/log4j.jar], exists: [false], canRead: [false]
Jan 20, 2014 5:30:35 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with JAR file [/usr/share/java/tomcat7/log4j.jar], exists: [false], canRead: [false]
Jan 20, 2014 5:30:36 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Jan 20, 2014 5:30:37 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Jan 20, 2014 5:30:37 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 5:30:37 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1404 ms
Jan 20, 2014 5:30:37 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 5:30:37 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.40
Jan 20, 2014 5:30:37 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /var/lib/tomcat7/webapps/ROOT.war
Jan 20, 2014 5:30:47 PM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.apache.myfaces.webapp.StartupServletContextListener" is already configured for this context. The duplicate definition has been ignored.
Jan 20, 2014 5:30:47 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]
Jan 20, 2014 5:30:50 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Jan 20, 2014 5:30:50 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 5:30:50 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 12969 ms

最佳答案

万一其他人有这个问题,我是这样解决的。

在我的 context.xml 文件中,我必须为标签添加以下属性

factory="org.apache.commons.dbcp.BasicDataSourceFactory"

...所以我的最终标签看起来像...

<Resource name="jdbc/resourceName"
    auth="Container"
    type="javax.sql.DataSource"
    logAbandoned="false" 
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    username= "username"
    password="password"
    driverClassName="com.mysql.jdbc.Driver"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    url="jdbc:mysql://your.mysql.host"/>

基本上,我只是强制它恢复为不使用 Tomcat 的 DBCP 类。

关于java - 将 jar 添加到 Tomcat 服务安装的 lib 文件夹后出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240052/

相关文章:

java - 将第二个项目添加到列表似乎会覆盖我添加的第一个元素

java - 如何在 Windows 启动时从注册表启动 jar 文件?

java - 如何创建base64Binary数据?

java - 集群环境中基于 Java 的 REST Web 应用程序的 session 管理

php - 如何在另一个类中创建一个类的实例

javascript - 如何在该类中的函数内的类中设置 this.var?

javascript - 有什么方法可以在 webworker 中加载类,而不仅仅是普通的 javascript 文件吗?

java - 哪个 weblogic jar 文件包含 com.bea.logging.BaseLogRecord?

java - 无法使用 Eclipse 将文件夹从项目导出到 jar

java - Maven 选择了错误的重复依赖项