繁体   English   中英

如何防止jar-in-jar-loader加载特定类?

[英]How to prevent jar-in-jar-loader loading specific class?

想象一下,我有一个文件夹的以下项目结构

  • 一种
  • C

和许多外部罐子。

现在,我正在尝试构建两个不同的可执行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM