2009-10-06 6 views
0

У меня есть эти файлы board.class и x4.class (x4.class имеет метод main()).Не удалось запустить файл jar на Windows

сотрясать эти файлы, я написал

jar cf x4.jar *.class 

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

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

Failed to load Main-Class manifest attribute from C:\Users\eSKay\Desktop\x4.jar

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


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

java -jar x4.jar 

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

В чем проблема?

+0

У меня такая же проблема. У меня есть правильный файл манифеста, и я запускал jars раньше на моем старом компе, но по какой-то причине у меня возникают проблемы с новым (Running windows 7 64-bit). Мне удалось запустить файл jar в cmd, но когда я нажимаю на него, ничего не происходит. Я повторно использовал java с jdk и jre 6 (сначала удалил старую версию) и установил мои пути. javac и java работают отлично в cmd. также в свойствах он говорит, что он открывается платформой Java (tm) SE binary ' – 2011-06-13 02:54:16

ответ

5

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

Manifest-Version: 1.0 
Main-Class: x4  

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

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

jar cfm x4.jar manifest.txt *.class 

Чтобы проверить это, выполните команду:

java -jar x4.jar 
+0

Я попробовал, все равно точно такую ​​же ошибку! – Lazer

+0

Если вы правильно указали атрибут, вы не получите * точно * эту ошибку.Отправьте содержимое файла манифеста. Запустите «jar tvf x4.jar», чтобы убедиться, что файл jar действительно содержит манифест - он будет там как «meta-inf/MANIFEST.MF» IIRC. –

+0

@ Раньше я не создавал файл манифеста. После того, как вы сказали мне, я просто скопировал эти две строки в файл manifest.txt. «jar tvf x4.jar» показывает, что файл манифеста присутствует. скриншот - http://imgur.com/7YHAS.jpg. Его передо мной, как-то я получаю «точно такую ​​же» ошибку! – Lazer

2

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

Setting an Application's Entry Point

Warning: The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.

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

The 'e' flag (for 'entrypoint'), introduced in JDK 6, creates or overrides the manifest's Main-Class attribute. It can be used while creating or updating a jar file. Use it to specify the application entry point without editing or creating the manifest file. For example, this command creates app.jar where the Main-Class attribute value in the manifest is set to MyApp:

jar cfe app.jar MyApp MyApp.class 

You can directly invoke this application by running the following command:

java -jar app.jar 

If the entrypoint class name is in a package it may use a '.' (dot) character as the delimiter. For example, if Main.class is in a package called foo the entry point can be specified in the following ways:

jar cfe Main.jar foo.Main foo/Main.class 
+0

(тот же комментарий, что и на пост Джона). Да, мне не хватало терминатора строк, он хорошо показал в Notepad ++, но не был, когда я открыл файл через vi (используя SSH для Linux-машины). Поэтому я добавил его, и теперь ошибка исчезла. Но, когда я дважды щелкаю x4.jar, ничего не происходит, я проверил диспетчер задач и обнаружил, что javaw.exe запускается в фоновом режиме, но он не показывает результат, который выдавала оригинальная программа. – Lazer