Chr*_*ris 4 jboss runtime classpath jboss7.x
我的目标是在JBoss 7.1.1中部署一个ear文件.ear文件中的一个类(我无法更改)是使用sun.net.util.IPAddressUtilJRE的rt.jar类.
在我的IDE(eclipse)中解析了这个类并且它正常编译.但是当我尝试在JBoss 7.1.1上部署(包含类的耳朵)时,它给了我java.lang.NoClassDefFoundError: sun/net/util/IPAddressUtil.JAVA_HOME变量在我的机器中设置,我看到JBoss和eclipse都使用相同的JDK(1.6.X)
当我在lib文件夹中将EAR与rt.jar捆绑在一起时,EAR 正确部署(这是一种不好的方法).
我看过JBoss社区,它说要配置为任何第三方jar的模块.但是,我需要的类是在rt.jar中,我不赞成将它添加为模块
有没有办法配置JBoss 7.1.1手动查看%JAVA_HOME%/jre/lib/rt.jar?
提前致谢.
Gee*_*nte 13
JBoss 7使用jboss-modules技术进行模块化类加载,类似于OSGi.它将在其自己的lib目录中使用rt.jar和一堆库来启动应用程序服务器本身.但是当它加载你的web应用程序时,它将创建一个自定义类加载器,根据它声明的模块依赖关系限制它将看到的类.
要声明模块依赖关系,您需要在EAR的META-INF目录(或WAR的WEB-INF)中包含jboss-deployment-structure.xml.请参阅https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7.要声明对rt.jar中的类的依赖,需要<system>依赖项:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<dependencies>
<system export="true">
<paths>
<path name="sun/net/util"/>
</paths>
</system>
</dependencies>
</deployment>
</jboss-deployment-structure>
Run Code Online (Sandbox Code Playgroud)
您还可以尝试提取IPAddressUtil类并将其打包为单独的模块.您可以从openjdk获取源代码,例如http://www.docjar.com/html/api/sun/net/util/IPAddressUtil.java.html