2010-11-12 39 views
4

我運行在Ubuntu 10.10下面的代碼,使用OpenJDK的1.6.0_18:參數在Java中的Jar忽略

package mypkg; 
public class MyTest { 
    public static void main(final String[] args) { 
    System.out.println(args.length + " argument(s)"); 
    for (final String arg : args) { 
     System.out.println(arg); 
    } 
    } 
} 

它編譯成JAR後,我完全不解,爲什麼從執行下面的命令終端返回0 argument(s)

Java的罐子mytest.jar這是一個測試

這是我的the Java docs解釋,他說:

的java [選項] -jar file.jar [參數...]

我幾乎有我在終端輸入一個錯誤的命令的感覺。是什麼賦予了?

編輯:的MANIFEST.MF包含:

Manifest-Version 1.0 
Created-By: 1.6.0_18 (Sun Microsystems Inc.) 
Main-Class: mypkg.Starter 
Class-Path: . 
+1

你的jar的META-INF/MANIFEST.MF包含什麼? – 2010-11-12 15:01:06

+0

我已經更新了OP。 Main-Class路徑與包聲明相同。 – 2010-11-12 15:05:41

+0

哇。我覺得自己像個白癡。畢竟它是'主要類':我正在啓動一個不同的類來處理這些爭論,並將它們(錯誤地)傳遞給所需的類。 – 2010-11-12 15:09:02

回答

3

查看您的META-INF/MANIFEST.MF文件的內容;確保你的Main-Class正在使用正確的課程。

1

如果你知道你的主類,你可以不用的-jar選項。

java -classpath .:my_jar_file.jar; package.MainClass [arguments] 

這在Debian Lenny上工作。

+0

果然,這可以工作(用':'替換';'),但這是一種解決方法。這是OpenJDK中的錯誤嗎? – 2010-11-12 15:01:40

2

您的清單將mkpkg.MyTest指定爲主類文件,而您實際發佈的文件的名稱爲mypkg.MyTest

此外,您指定一個「。」類路徑。在你的清單中,最好是多餘的,但可能導致你看到的問題(因爲你的本地目錄中可能有一個名爲mkpkg的目錄)。

+0

你有一個敏銳的眼睛;這只是一個錯字,但這確實是問題的根源。我編輯了OP來演示。 – 2010-11-12 15:15:57