[英]How to prevent jar-in-jar-loader loading specific class?
想象一下,我有一个文件夹的以下项目结构
和许多外部罐子。
现在,我正在尝试构建两个不同的可执行jar,例如A + B,A + C。
首先,我执行Eclipse->导出->可执行Jar并保存Ant脚本。 因此,它将生成Ant脚本和jar-in-jar-loader。 现在,我修改ant脚本以排除文件夹B
<fileset dir="C:/Users/Nikolay/bin">
<exclude name="org/B"/>
</fileset>
并保持jar-in-jar-loader.zip
文件jar-in-jar-loader.zip
。
构建完jar之后,运行会出现此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/B
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:56)
Caused by: java.lang.ClassNotFoundException: org.B
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 3 more
但我确定A中不会使用B类。
JarRscrLoader
似乎在应用程序启动时尝试加载所有列出的类。 我该如何预防?
请不要建议我将Eclipse的代码分成2-3个项目。
创建两个不同的运行配置(运行->运行配置...),然后根据需要修改classpath选项卡中包含的库。
导出项目时,只需选择适当的配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.