【发布时间】:2013-11-13 06:23:53
【问题描述】:
我的项目结构如下。服务器是 Glassfish 4。IDE - netbeans 7.4。项目 temp 由项目 a 使用。
EAR
+ lib/temp.jar
+ a.war
Temp.jar 包含核心类。它们被战争使用。 Temp.jar 不会从战争中导入任何文件,它必须对战争一无所知。但是,temp.jar 具有通过反射创建战争类实例的类(根据 xml 文件)。在这里我得到ClassNotFoundException。如何修复?是否可以修复或我的项目结构错误?
注意:我没有将 temp.jar 放在 a.war 中,因为可以有不同的 war 文件可以使用这个 jar。
【问题讨论】:
-
有
application.xml文件吗?它是否包含<library-directory>元素? -
@Nikos Paraskevopoulos 谢谢你的时间。不,没有任何application.xml
-
我认为根据规范您的设置应该工作。但是,您能否在 WAR 中创建一个
META-INF/MANIFEST.MF文件(在内容根目录下,即与WEB-INF并排)并按如下方式放置一个条目:Class-Path: lib/temp.jar -
@Nikos Paraskevopoulos 结果是一样的。战争类可以毫无问题地到达 jar 类。 Jar 类无法访问战争文件。
-
我的失败!!!我没有注意到确切的问题(使用 JAR 中的 WAR 类)。不过,一种 dirty 方法(从未测试过,请注意)是在 JAR 的清单中放置一个类似的 Class-Path 条目:
Class-Path: ../a.war。但我建议将共享类放在 另一个 JAR 中,并从 WAR 和 JAR 中引用它。
标签: java jakarta-ee glassfish