无法加载资源工厂类java.lang.ClassNotFoundException:com.jolbox.bonecp.BoneCPDataSource

问题描述 投票:1回答:3

我想使用BoneCP进行连接池。但是我得到了一个无法加载资源工厂类的日志。我在tomcat启动时遇到了这个错误日志

SEVERE: Exception processing Global JNDI Resources
javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: com.jolbox.bonecp.BoneCPDataSource]
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:81)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
    at org.apache.naming.NamingContextBindingsEnumeration.nextElementInternal(NamingContextBindingsEnumeration.java:113)
    at org.apache.naming.NamingContextBindingsEnumeration.next(NamingContextBindingsEnumeration.java:71)
    at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans(GlobalResourcesLifecycleListener.java:137)
    at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans(GlobalResourcesLifecycleListener.java:109)
    at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEvent(GlobalResourcesLifecycleListener.java:81)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:747)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: com.jolbox.bonecp.BoneCPDataSource
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:79)
    ... 17 more

我已经像这样将资源添加到server.xml。

<GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />

        <Resource type='javax.sql.DataSource'
              name='demodb'
           factory='com.jolbox.bonecp.BoneCPDataSource'
   driverClassName='oracle.jdbc.driver.OracleDriver'
           jdbcUrl='jdbc:oracle:thin:@localhost:1521:XE'
          username='system'
          password='system'
        idleMaxAge='240'
     idleConnectionTestPeriod='60'
    partitionCount='3'
  acquireIncrement='5'
   maxConnectionsPerPartition='10'
   minConnectionsPerPartition='5'
          statementsCacheSize='50'
         releaseHelperThreads='5'
         />
  </GlobalNamingResources>

任何人都可以告诉我这是什么问题?

java database-connection tomcat6 jndi connection-pooling
3个回答
0
投票

例外情况说,找不到类com.jolbox.bonecp.BoneCPDataSource。您是否确保该类是由服务器或您的应用程序加载的?

它应该位于其中一个jars.

希望这有帮助,玩得开心!


0
投票

你必须添加这一行:

     <pathelement location="/path/bonecp-0.7.1.RELEASE.jar"/>

进入你的类路径。如果要使用Netbeans,请更正路径。


0
投票

有时错误可能是由于混合罐子造成的。连接池使用自定义类加载器,不允许来自不同BoneCP / Datanucleus版本的jar。

© www.soinside.com 2019 - 2024. All rights reserved.