想象一下,我有一个以下文件夹的项目结构
和许多外部罐子。
现在我正在尝试构建两个不同的可执行jar,例如A + B,A + C.
首先,我做Eclipse - >出口 - > Ant的可执行Jar和保存脚本。所以它生成了Ant脚本和jar-in-jar-loader。现在我修改ant脚本以排除文件夹B
<fileset dir="C:/Users/Nikolay/bin">
<exclude name="org/B"/>
</fileset>
并保持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个项目。
答案 0 :(得分:0)
创建两个不同的运行配置(运行 - >运行配置...),并根据您的要求修改类路径选项卡中包含的库。
导出项目时,只需选择适当的配置即可。