gpt4 book ai didi

java - jboss - 在模块调用中找不到类

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:23 24 4
gpt4 key购买 nike

我的耳朵里有apache commons lang,我正在调用一个ejb,它在ear文件夹中包含所有jar并且配置正确,但是当我调用ear时,我收到以下错误

Caused by: java.lang.ClassNotFoundException:    
org.apache.commons.lang.builder.ToStringBuilder from [Module "test.common:main"

这是从我创建(编译)的使用commons lang的模块中抛出的。为什么jboss不使用ear部署中的commons lang?除了 jar 在耳朵外面以便模块可以使用它们之外,我还应该在其他地方吗?

最佳答案

EAR 是隔离的,因此您的模块无法看到您在 EAR 中打包的内容。

模块本身也是隔离的。因此,您需要在模块的 module.xml 文件中提供“commons lang”对模块的依赖关系。例如JBossAS7提供了commons-lang模块。您可以将其作为依赖项包含在 module.xml 中:

 <dependencies>
<module name="org.apache.commons.lang" />
</dependencies>

同样,您可以在 EAR/META-INF/jboss-deployment-struct.xml 中添加相同的依赖项。这样,模块和 EAR 将使用相同的 commons-lang jar,这样您就可以避免 CLassCastExceptions。

或者,您可以在 module.xml 中添加 export="true" 依赖项,这样当您包含模块时,它会将其依赖项导出到其他包。

关于java - jboss - 在模块调用中找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15371782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com