4

我使用 OpenJDK 1.6.0_18 在 Ubuntu 10.10 上运行以下代码:

 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 -jar mytest.jar 这是一个测试

这是我对Java 文档的解释,说明:

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: .
4

3 回答 3

3

查看META-INF/MANIFEST.MF文件的内容;确保您Main-Class使用的是正确的课程。

于 2010-11-12T15:11:26.980 回答
2

您的清单指定mkpkg.MyTest为主类文件,而您实际发布的文件名为mypkg.MyTest.

此外,您指定“。”的类路径。在您的清单中,这充其量是多余的,但可能会导致您看到的问题(因为您可能有一个mkpkg在本地目录中命名的目录)。

于 2010-11-12T15:12:48.423 回答
1

如果你知道你的主类,你可以在没有 -jar 选项的情况下做到这一点。

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

这在 Debian Lenny 上对我有用。

于 2010-11-12T14:57:10.020 回答