繁体   English   中英

从Eclipse导出的JAR文件与可运行的JAR文件中的行为不同

[英]Different behavior in JAR file vs Runnable JAR file exported from Eclipse

根据从Eclipse的File | Export对话框中选择JAR文件还是Runnable JAR文件 ,我从下面的代码中得到不同的结果:

public static void main(String[] args) throws IOException {
    Enumeration<URL> dirs = Thread.currentThread().getContextClassLoader().getResources(
                "com/test/pojo");
    System.out.println(dirs.hasMoreElements());
}

如果我选择:

  • JAR文件 -上面的代码显示为false
  • 可运行的JAR文件 -上面的代码显示为true

我比较了两种方式导出的JAR的内容,它们中的文件完全相同!

谁能解释这是怎么回事?

我不确定我的答案,但我会尝试:您的文件也许是相同的,但这并不意味着文件的元数据是相同的,即您可以拥有不同的文件(例如,不同的格式),但包含相同的数据。 因此,也许Runnable JAR和JAR的元数据是不同的(这并不奇怪)。

问题已解决!ClassLoader.getResources()将类加载到我的jar中,但是不可运行的jar无法维护正确的目录实体。

可运行的JAR:

jar tf hall1.jar
META-INF/MANIFEST.MF
  com/
  com/test/
  com/test/Main.class
  com/test/pojo/
  com/test/pojo/Pojo.class

不可运行的JAR:

jar tf hall1.jar
  META-INF/MANIFEST.MF
  com/test/Main.class
  com/test/pojo/Pojo.class

因此,我要做的就是在JAR-Export面板中选择“选项-添加目录条目”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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