我的目錄結構是這樣的:如何在從父目錄編譯時在清單文件中指定主類?
javac src/*.java
jar cvfm app.jar src/manifest.txt src/*.class
manifest.txt
包含此:
> makefile
> app.jar
> src
> Main.java
> Main.class
> some other classes
> manifest.txt
我從這些命令生成文件編譯
Main-Class: Main
當我從上面運行java -jar app.jar
目錄我得到這個錯誤:
$ java -jar app.jar
Exception in thread "main" java.lang.NoClassDefFoundError: Main
Caused by: java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Main. Program will exit.
我試着改變清單,說Main-Class: src.Main
,但也沒有工作。這可能很簡單,但我發現Google不提供任何簡單的解決方案。
你確認生成的'jar'裏面包含'Main'類? – bellum
我認爲jar應該被調用爲'jar cvfm app.jar src/manifest.txt -C src * .class'。 – khachik