当前位置: 首页 > 知识库问答 >
问题:

如何在EAR中的jar和共享库之间获得Websphere Liberty Profile中的类加载器可见性

邢烨烨
2023-03-14
Caused by: java.lang.ClassNotFoundException: com.isb.holamu.fnegocio.ln.AAL_FNegocioFactory <-- This class (1) is inside a .jar inside the EAR
       at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:491)
       at com.ibm.ws.classloading.internal.AppClassLoader.findClass(AppClassLoader.java:274)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at com.ibm.ws.classloading.internal.AppClassLoader.findOrDelegateLoadClass(AppClassLoader.java:469)
       at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:441)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at java.lang.Class.forName0(Native Method)
       at java.lang.Class.forName(Unknown Source)
       at com.isb.bs.bl.base.MetaFacadeFactory.createFactoryInstance(MetaFacadeFactory.java:74) <-- This class (2) is in the shared library in WLP.
   <!-- Server shared library -->

   <library id="architecture" >
         <fileset dir="${server.config.dir}/lib/jars" includes="*.jar" scanInterval="5s"/>  <-- (2) is here

   </library>

   <enterpriseApplication autoStart="true" id="sample" location="sample.ear" name="sample"> <-- (1) is here
         <classloader commonLibraryRef="architecture" delegation="parentFirst"/>
   </enterpriseApplication>

有谁能给出什么线索如何使这工作吗?

谢谢!

共有1个答案

丁茂
2023-03-14

这是行不通的,因为通用库使用自己的类加载器,而不是引用它们的应用程序的类加载器。

要实现此操作,请将commonLibraryRef更改为PrivateLibraryRef。这将有效地将库内容添加到应用程序的类路径中。

--乔

 类似资料:
  • 问题内容: 我需要不同的类加载器才能卸载类。但是我需要在它们之间共享对象(实际上我正在获得ClassCastException)。那么解决该问题的解决方案是什么?谢谢 问题答案: 来自不同类加载器的对象可以通过公共类加载器加载的接口和类彼此交互。

  • 问题内容: 我正在从python脚本中调用一个so文件。据我了解,我真的不需要释放使用ctypes在python中打开的共享库。但是,在我的so文件代码中,它dlopen另一个so文件并且不执行dlclose()。在这种情况下,从python端使用安全吗?我不必释放在ctypes内部加载的共享库soe文件吗? 问题答案: 始终遵循 “自己清洁后清理 ”的规则(尽管现代技术会为您提供清洁方面的帮助)

  • 问题内容: 在Java中的各个类之间共享数据的最佳方法是什么?我有一堆变量,它们由不同的类以不同的方式在不同的文件中使用。让我尝试说明问题的简化版本: 这是我之前的代码: 现在看起来像这样: 所以无论如何,我应该每次都传递x和y(其中x,y是存储在辅助类func中的变量)吗? 我的想法是要有一个特殊的容器类,其中存放x和y。顶级类将具有容器类的实例,并使用set方法更改x,y。 我的帮助程序类还将

  • 我想使用@SessionAttributes注释在SpringMVC中的两个控制器之间共享会话属性。 下面是我用来测试属性共享的一个简单代码:AController。JAVA a.jsp BController.java b.jsp 我期望的行为是转到 /aURL,myParam将被设置为0到99之间的随机值,然后该值将在两个控制器之间共享。 但是,会发生以下情况:我转到/a URL,myPara

  • 我有一个Groovy库作为全局共享库提供: 以及使用此库的Jenkins脚本化管道作业: 当作业运行时,我从获得以下输出,然后是的错误: 我很清楚,一些Jenkins插件已经依赖于httpcomponents,以下情况似乎是正确的: 我的注释导致所请求的http客户端版本被下载(如中观察到的)。 但是,Groovy库没有加载或使用该版本,而是依赖于Jenkins插件的其他版本。 而且,更恼人的是,

  • 本文向大家介绍静态库和共享库之间的区别,包括了静态库和共享库之间的区别的使用技巧和注意事项,需要的朋友参考一下 在编程上下文库中是一种具有某种代码的东西,这些代码已经过预编译,可以在任何程序中重新使用以实现某些特定功能或特性。 现在,根据该代码库的执行和存储,将其分为两种类型,即静态库和共享库。 以下是静态库和共享库之间的重要区别。 序号 要点 静态库 共享库 1 定义 静态库是一个库,其中执行文