簡體   English   中英

從父目錄進行編譯時,如何在清單文件中指定主類?

[英]How do you specify a main class in a manifest file when compiling from the parent directory?

我的目錄結構是這樣的:

> makefile
> app.jar
> src
    > Main.java
    > Main.class
    > some other classes
    > manifest.txt

我使用以下命令從makefile進行編譯:

javac src/*.java
jar cvfm app.jar src/manifest.txt src/*.class

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沒有提供任何簡單的解決方案。

請從Oracle找到答案

http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

請找到示例代碼:-

package oata
public class HelloWorld {
 public static void main(String[] args) {
    System.out.println("Hello World");
 }
 }

創建一個文件夾以放置.class文件,然后編譯並運行該文件。

 `md build\classes
   javac -sourcepath src -d build\classes src\oata\HelloWorld.java
  java -cp build\classes oata.HelloWorld`


  `echo Main-Class: oata.HelloWorld>myManifest
     md build\jar
    jar cfm build\jar\HelloWorld.jar myManifest -C build\classes .
    java -jar build\jar\HelloWorld.jar`

謝謝帕萬

您正在獲取NoClassDefFoundError異常,可能是未正確設置類路徑。

謝謝,帕萬

暫無
暫無

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

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