簡體   English   中英

將jar添加到Tomcat Service安裝的lib文件夾后,出現ClassNotFoundException

[英]ClassNotFoundException after adding the jar to the lib folder of a Tomcat Service installation

我正在嘗試更新Web應用程序以使用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類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM