JAR中的类文件似乎被忽略了;类文件是从类路径上的目录中提取的



我正试图获得一个在CLI上执行的简单JAR文件(没有清单)。文件夹结构如下:

modsun.jar
outtestMain.class
srctestMain.java

这是Main.java:

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

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

javac -d out srcMain.java
java -cp out test.Main      - this works
jar -cvf modsun.jar outtestMain.class
java -cp modsun.jar;out test.Main   - works (when 'out' is in classpath)
java -cp modsun.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-INFMANIFEST.MF
outtestMain.class

清单本身是:

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

所以看起来JAR中的类文件根本没有被拾取。如果我在运行java时省略了out文件夹,或者如果我重命名了out文件夹中的.class文件),我会得到未找到类的错误。我想让它在没有舱单的情况下工作。

有什么想法吗?

谢谢,Seán。

您需要更改到'out'目录才能在jar中获得正确的包根目录:

jar -cvf modsun.jar -C out testMain.class

相关内容

  • 没有找到相关文章

最新更新