Аргументы игнорируются в Java Jar - PullRequest
4 голосов
/ 12 ноября 2010

Я запускаю следующий код в Ubuntu 10.10, используя OpenJDK 1.6.0_18:

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

Ответы [ 3 ]

3 голосов
/ 12 ноября 2010

Посмотрите на содержимое вашего META-INF/MANIFEST.MF файла; убедитесь, что ваш Main-Class использует правильный класс.

2 голосов
/ 12 ноября 2010

В манифесте указан mkpkg.MyTest в качестве файла основного класса, в то время как файл, который вы на самом деле опубликовали, имеет имя mypkg.MyTest.

. Кроме того, вы указываете путь к классу "."в вашем манифесте, который в лучшем случае является излишним, но, вероятно, приводит к проблеме, которую вы видите (поскольку у вас, вероятно, есть каталог с именем mkpkg в вашем локальном каталоге).

1 голос
/ 12 ноября 2010

Если вы знали свой основной класс, вы можете сделать это без опции -jar.

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

Это работает для меня на Debian Lenny.

...