簡體   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