英文:
NoClassDefFoundError for DataSourceFactory on starting Tomcat9 server?
问题
我正在将一个 JAR 文件部署到 classpath/lib
文件夹中,该文件夹包含了定制的 org.apache.tomcat.jdbc.pool.DataSourceFactory
子类。我将它作为 dataSource 的 Resource
标签在 server.xml
中的工厂类进行配置。适当的库已被添加(因此没有编译时错误),但在启动服务器时,出现以下错误日志,导致无法启动:
严重: 所需的服务器组件启动失败,因此Tomcat无法启动。
org.apache.catalina.LifecycleException: 无法启动组件[StandardServer[8013]]
在 org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
在 org.apache.catalina.startup.Catalina.start(Catalina.java:682)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
在 java.lang.reflect.Method.invoke(Unknown Source)
在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/jdbc/pool/DataSourceFactory
在 java.lang.ClassLoader.defineClass1(Native Method)
在 java.lang.ClassLoader.defineClass(Unknown Source)
在 java.security.SecureClassLoader.defineClass(Unknown Source)
在 java.net.URLClassLoader.defineClass(Unknown Source)
在 java.net.URLClassLoader.access$100(Unknown Source)
在 java.net.URLClassLoader$1.run(Unknown Source)
在 java.net.URLClassLoader$1.run(Unknown Source)
在 java.security.AccessController.doPrivileged(Native Method)
在 java.net.URLClassLoader.findClass(Unknown Source)
在 java.lang.ClassLoader.loadClass(Unknown Source)
在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
在 java.lang.ClassLoader.loadClass(Unknown Source)
在 java.lang.ClassLoader.loadClass(Unknown Source)
在 org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:61)
在 javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
在 org.apache.naming.NamingContext.lookup(NamingContext.java:840)
在 org.apache.naming.NamingContext.lookup(NamingContext.java:159)
在 org.apache.naming.NamingContext.lookup(NamingContext.java:827)
在 org.apache.naming.NamingContext.lookup(NamingContext.java:173)
在 org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1015)
在 org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:556)
在 org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:252)
在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:762)
在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.DataSourceFactory
在 java.net.URLClassLoader.findClass(Unknown Source)
在 java.lang.ClassLoader.loadClass(Unknown Source)
在 sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
在 java.lang.ClassLoader.loadClass(Unknown Source)
... 32 more
有人能帮助我吗?任何信息都将有所帮助。提前谢谢您的帮助;-)
英文:
I am deploying a JAR file to the classpath/lib
folder which contains the customized subclass of org.apache.tomcat.jdbc.pool.DataSourceFactory
and I am feeding it as a factory class for dataSource's Resource
tag in server.xml
. The appropriate libraries are being added (Hence no compile time error) but on starting the server it is giving the the following error log and failing to start :
SEVERE: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8013]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/jdbc/pool/DataSourceFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:61)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source)
at org.apache.naming.NamingContext.lookup(NamingContext.java:840)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.NamingContext.lookup(NamingContext.java:827)
at org.apache.naming.NamingContext.lookup(NamingContext.java:173)
at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1015)
at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:556)
at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:252)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:762)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.DataSourceFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 32 more
Can anybody help me? any information will be helpful. Thank you in advance
专注分享java语言的经验与见解,让所有开发者获益!
评论