NoClassDefFoundError for DataSourceFactory on starting Tomcat9 server?

huangapple 未分类评论46阅读模式
英文:

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 NoClassDefFoundError for DataSourceFactory on starting Tomcat9 server?

huangapple
  • 本文由 发表于 2020年5月4日 21:41:12
  • 转载请务必保留本文链接:https://java.coder-hub.com/61593661.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定