簡體   English   中英

JAR 中的類文件似乎被忽略了; 而是從類路徑上的目錄中提取類文件

[英]class file in JAR seems to be ignored; class file being picked up from directory on classpath instead

我正在嘗試在 CLI 上執行一個簡單的 JAR 文件(沒有清單)。 文件夾結構如下:

mods\un.jar
out\test\Main.class
src\test\Main.java

這是Main.java

package test;

public class Main{
  public static void main(String []args){
    System.out.println("Unnamed module...");

  }
}

以下是根文件夾中的命令:

javac -d out src\Main.java
java -cp out test.Main      - this works
jar -cvf mods\un.jar out\test\Main.class
java -cp mods\un.jar;out test.Main   - works (when 'out' is in classpath)
java -cp mods\un.jar test.Main - ERROR

最后一行生成錯誤:

Error: Could not find or load main class test.Main
Caused by: java.lang.ClassNotFoundException: test.Main

我查看了 JAR zip,看起來還不錯。 MANIFEST.MF 是默認的,但這沒關系,因為我明確地告訴 Java 從哪個類開始(帶有 main() 的類)。 內容是:

META-INF\MANIFEST.MF
out\test\Main.class

清單本身是:

Manifest-Version: 1.0
Created-By: 11 (Oracle Corporation)

所以看起來 JAR 中的類文件根本沒有被拾取。 如果我在運行java時省略了out文件夾,或者如果我重命名了out文件夾中的.class文件),我會收到 class not found 錯誤。 我想讓它在沒有清單的情況下工作。

有任何想法嗎?

謝謝,肖恩。

您需要更改到 'out' 目錄以使您的包根在 jar 中正確:

jar -cvf mods\un.jar -C out test\Main.class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM