Не удается запустить мой JAR-файл в Windows - PullRequest
0 голосов
/ 06 октября 2009

У меня есть эти файлы board.class и x4.class (в x4.class есть метод main ()).

Чтобы встряхнуть эти файлы, я написал

jar cf x4.jar *.class

и получил файл x4.jar.

Я скопировал этот файл x4.jar на рабочий стол (в Windows Vista) и дважды щелкнул его. Я получаю эту ошибку:

Не удалось загрузить манифест основного класса атрибут из C:\Users\eSKay\Desktop\x4.jar

Что я должен сделать, чтобы этот файл работал как исполняемый файл jar (без установки какого-либо программного обеспечения)?


UPDATE: Я использовал файл манифеста для решения проблемы. У меня есть файл jar, который мне нужен, и он работает нормально, если вы делаете:

java -jar x4.jar

Но, когда я дважды щелкаю x4.jar, ничего не происходит, я проверял диспетчер задач и обнаружил, что javaw.exe запускается в фоновом режиме, но он не показывает вывод, который выдавала оригинальная программа.

В чем может быть проблема?

Ответы [ 2 ]

5 голосов
/ 06 октября 2009

Вам необходимо создать файл манифеста , который содержит атрибут Main-Class для указания его точки входа . Затем используйте флаг "m" в команде jar, чтобы указать его. Например, у вас может быть файл с именем manifest.txt:

Manifest-Version: 1.0 
Main-Class: x4    

Обратите внимание, что в конце файла должна быть пустая строка, иначе инструмент jar не обработает его должным образом, игнорируя последнюю строку молча .

Затем запустите:

jar cfm x4.jar manifest.txt *.class

Чтобы проверить это, запустите:

java -jar x4.jar
2 голосов
/ 06 октября 2009

Я думаю, что @Jon правильно, просто убедитесь, что вы заканчиваете файл CR / LF.

Настройка точки входа в приложение

Предупреждение: текстовый файл должен заканчиваться новая строка или возврат каретки. Последний строка не будет проанализирована должным образом, если она не заканчивается новой строкой или возврат каретки.

Или вы можете позволить jar-программе автоматически создать для вас атрибут Main-Class.

Флаг 'e' (для 'точки входа'), введен в JDK 6, создает или переопределяет главный класс манифеста приписывать. Может использоваться в то время как создание или обновление файла jar. использование это указать запись приложения указать без редактирования или создания файл манифеста. Например, это Команда создает app.jar, где Значение атрибута Main-Class в для манифеста установлено значение MyApp:

jar cfe app.jar MyApp MyApp.class

Вы можете напрямую вызвать это приложение, запустив следующее Команда:

java -jar app.jar

Если имя класса точки входа находится в пакет может использовать «.» (Точка) символ как разделитель. За пример, если Main.class находится в пакете называется Foo точка входа может быть указывается следующими способами:

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