2010-11-12 2 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 -jar mytest.jar это тест

Это моя интерпретация the Java docs , Заявив:

Java [опции] -jar file.jar [аргумент ...]

Я почти такое чувство, что я вхожу неправильно команду в терминале. Что дает?

Edit: MANIFEST.MF содержит:

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

В чем содержится ваш МЕТА-INF/МАНИФЕСТ.МФ в вашей банке? –

+0

Я обновил OP. Основной путь - это то же самое, что и объявление пакета. –

+0

Ничего себе. Я чувствую себя идиотом. В конце концов, это был «Основной класс»: я запускал другой класс, который обрабатывал аргументы, и передавал их (неправильно) в нужный класс. –

ответ

3

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

1

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

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

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

+0

Конечно, это работает (вместо '' '' '' '' '), но это обходное решение. Это ошибка в OpenJDK? –

2

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

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

+0

У тебя острый глаз; это была просто опечатка, но на самом деле это был источник проблемы. Я отредактировал OP, чтобы продемонстрировать. –

Смежные вопросы