Как создать .jar для запуска приложения командной строки - PullRequest
1 голос
/ 27 декабря 2011

Для простоты я буду использовать hello world ...

public class HelloWorld{

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

Компилируется и работает нормально, как вы себе представляете.Затем создал файл Manifest.txt, содержащий:

Main-Class: HelloWorld

, затем запустил:

jar -cfm Hello.jar Manifest.txt *.class

Однако, когда я дважды щелкаю по полученному Hello.jar, ничего не происходит.Я ожидаю, что консоль по крайней мере быстро откроется ... (У меня есть более сложная программа, которая ожидает ввода)

Есть идеи, почему это не работает?

Этозапускает процесс в диспетчере задач (windows), но не открывает cmd

Ответы [ 4 ]

2 голосов
/ 27 декабря 2011

убедитесь, что за строкой Main-Class в файле манифеста следует пустая строка!
Трудно поверить, но спецификация требует, чтобы каждая строка файла манифеста, включая последнюю, заканчивалась символом новой строки.

EDIT:
Если проблема заключается только в двойном щелчке, попробуйте (при условии Windows):

assoc .jar=jarfile
ftype jarfile="<JRE directory>\bin\javaw.exe" -jar "%1" %*

(используйте их без аргументов для проверки фактических настроек)

Вашим клиентам понадобится JRE для запуска Java-программы - вышеуказанные настройки обычно выполняются установкой JRE.

EDIT2:
Используйте java.exe вместо javaw.exe, чтобы увидеть стандартную консоль (если ваша программа не имеет графического интерфейса)

1 голос
/ 27 декабря 2011

Попробуйте выполнить из командной строки

java -jar /path/to/YourJar.jar

Убедитесь, что у вас есть Main-Class запись


См. Также

0 голосов
/ 27 декабря 2011

Вы должны попробовать JSmooth . Он берет ваш файл jar и упаковывает его в исполняемый файл Windows.

0 голосов
/ 27 декабря 2011

Манифест должен иметь имя MANIFEST.MF, и он должен находиться в каталоге верхнего уровня с именем META-INF. Тогда это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...