2010-10-09 2 views
0

Я создаю файл jar с командой.Не удалось запустить файл jar

$jar -cvf A.jar A.class 

Я попытался выполнения

$java -jar A.jar 

я получаю ниже ошибки (Перед добавлением "Main-класс: А" до Manifest.mf).

Failed to load Main-Class manifest attribute from A.jar 

содержимое MANIFEST.MF

Manifest-Version: 1.0 

Created-By: 1.6.0_18 (Sun Microsystems Inc.) 
Main-Class: A 

Теперь я получаю

Exception in thread "main" java.lang.NoSuchMethodError: main 

ответ

1

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

Для того, чтобы сделать это, вы должны создать файл, содержащий следующую строку:

Main-Class: A 

(Я полагаю, ваш класс, содержащий ваш главный метод, если это не так, указать FQN из вашего желаемый класс)

и создать баночку с помощью следующей команды:

jar cfm A.jar yourFileContainingMain-Class A.class 

Например:

//Mac-Makkhdyn:~ Makkhdyn$ cat A.java 
public class A{ 
public static void main(String... args){ 
System.out.println("lol"); 
} 
} 
//Mac-Makkhdyn:~ Makkhdyn$ cat manifest 
Main-Class: A 
//Mac-Makkhdyn:~ Makkhdyn$ javac A.java 
//Mac-Makkhdyn:~ Makkhdyn$ jar cvfm A.jar manifest A.class 
added manifest 
adding: A.class(in = 399) (out= 278)(deflated 30%) 
//Mac-Makkhdyn:~ Makkhdyn$ java -jar A.jar 
lol 

После правки:

Вы обязательно иметь метод main() в вашем A класса, который вы хотите запустить. Проверьте ссылку ниже.


Ресурсы:

+0

Да работает сейчас – Jagan

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