我已经建立了这种结构(这里没有显示所有文件)的耳朵:
myapp.ear/
myapp-ejb.jar
myapp-web.war
META-INF/
application.xml
lib
myapp-common.jar
问题是,当战争代码试图引用的myapp-common.jar类,它抛出java.lang.ClassNotFoundException
。
需要注意的内容META-INF/application.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
<display-name>pncr-portal-ear</display-name>
<module>
<web>
<web-uri>myapp-web.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<module>
<ejb>myapp-ejb.jar</ejb>
</module>
<library-directory>/lib</library-directory>
</application>
图书馆目录在这里被定义为在为/lib
相对于耳朵,这也正是它的根目录下,但它没有加载到类路径,尽管Java EE 5的(大概6)符合规范说它应加载到类路径中。