Deployment 由于Classloader加载了错误的库,正在抛出ClassNotFoundExceptoin

Deployment 由于Classloader加载了错误的库,正在抛出ClassNotFoundExceptoin,deployment,migration,classloader,classnotfoundexception,websphere-8,Deployment,Migration,Classloader,Classnotfoundexception,Websphere 8,我在下面的类中得到一个ClassNotFoundException: org.apache.commons.pool.impl.CursorableLinkedList$Cursor 我已经回顾了web应用程序,它被打包到一个EAR中,并注意到上面的类有两个库(CursorableLinkedList) JAR文件是: 1.)com.ibm.ws.jpa.jar 2.)commons-pool-1.4.jar 特定于项目的JAR文件(即commons-pool-1.4.JAR)打包在WAR文件中

我在下面的类中得到一个ClassNotFoundException:

org.apache.commons.pool.impl.CursorableLinkedList$Cursor

我已经回顾了web应用程序,它被打包到一个EAR中,并注意到上面的类有两个库(CursorableLinkedList)

JAR文件是:

1.)com.ibm.ws.jpa.jar
2.)commons-pool-1.4.jar

特定于项目的JAR文件(即commons-pool-1.4.JAR)打包在WAR文件中,位于lib目录中

环境 EAR正在部署到服务器8中的Websphere Application。我使用的IDE是RationalApplicationDeveloper8

我将应用程序部署设置如下:

应用程序

我的耳朵

  • 类加载器模式:首先是父类
  • WAR类加载器策略:模块
  • 起始重量:10
  • 自动启动:是
myApp.WAR

  • 类加载器模式:首先是父类
  • 起始重量:10000
通过以上设置,我有时会得到ClassNotFoundException,有时不会。 我不想再出现这个错误,因为我相信由于类加载不当,以后可能会出现其他错误。
有谁能帮助我设置适当的部署设置,以便首先加载特定于项目的库吗?

这里发生的事情是,由于您首先使用的是PARENT_,当WebSphere查找包含com.ibm.ws.jpa.jar和commons-pool-1.4.jar的类时,它将从com.ibm.ws.jpa.jar加载它,我想可能存在版本不匹配之类的问题

我的猜测是,有些类是从com.ibm.ws.jpa.jar加载的,有些类(不在om.ibm.ws.jpa.jar中)是从commons-pool-1.4.jar加载的,然后您开始出现问题

如果希望首先加载jar,则需要指定WAR模块以最后使用PARENT_,这样可以确保将从jar而不是WebSphere的jar加载类