2012-04-12 12 views
16

Próbuję utworzyć plik .jar za pomocą terminala mac, ale mam trochę problemów. Wykonałem kroki here, ale nie udało się. Mam ten komunikat o błędzie:Jak utworzyć plik .jar za pomocą terminala

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

Więc jak dokładnie go o to robi? Mój program java nazywa się Main.java i skompilowałem go do pliku .class. Co mam teraz zrobić?

Dzięki

Odpowiedz

40

1) Upewnij się, że wszystkie niezbędne pliki są w katalogu otwarciu terminala Wiersz/Command i prowadziła nawigacja do tego katalogu.

2) Opracować klasy .java np HelloWorld.java z

javac HelloWorld.java 

3) będzie produkować plik .class potrzebne do pliku JAR.

4) Następnie utwórz plik manifestu (zapisany za pomocą rozszerzeniem .txt) za pomocą edytora tekstu i wprowadzić następujące

Main-Class: HelloWorld 

lub cokolwiek nazwa pliku jest.

5) Następnie utworzyć plik JAR użyciu tego kodu:

jar cfm HelloWorld.jar Manifest.txt HelloWorld.class 

6) Uruchom plik:

java -jar HelloWorld.jar 

Jeśli coś wydaje się niejasne konsultować te strony: creating a jar file i setting an applications entry point.

Mam nadzieję, że to pomaga innym, okrzyki Toma!

Edit:

następujący komentarz Inga jest to warto zauważyć, że w celu uwzględnienia wielu plików w słoiku trzeba użyć:

javac *.java 

następnie

jar cfm HelloWorld.jar Manifest.txt *.class 
+0

Dziękuję ! Wystąpił problem z instrukcjami, ponieważ mam wiele plików java w moim projekcie. Na początku myślałem, że muszę tylko skompilować moją główną klasę, ale jeśli masz wiele plików java, musisz je skompilować, więc zamiast "javac HelloWorld.java" będziesz musiał zrobić "javac * .java" i "jar cfm" HelloWorld.jar Manifest.txt HelloWorld.class "będzie" jar cfm HelloWorld.jar Manifest.txt * .class ". Nadal musisz tylko podać główną klasę w pliku manifestu. Mam nadzieję, że to pomoże, jeśli ktoś robi ten sam błąd co ja. – inga

+1

@inga Zaktualizowałem swoją odpowiedź, aby uwzględnić Twoje komentarze. Dzięki za informację! – Katana24

2

Trzeba mieć plik tekstowy, który określa główne klasę. np

% cat MyMain 
Main-Class: HelloWorld 

następnie

%jar cvfm foo.jar MyMain *.class 
%java -jar foo.jar 
Hello world 

Patrz: http://java.sun.com/j2se/1.4.2/runtime.html#example

+0

Śledziłem link i stworzył prosty przykład. Dla pliku tekstowego zawarta jest tylko główna klasa: HelloWorld Czy powinien tam być jakiś inny tekst? Również powinien być zapisany jako plik .txt lub .mf czy coś takiego? – Katana24

+1

Btw ja wciąż się nie powiodło się Loa Main-Class oczywistego błędu nawet po wykonaniu twojej rady:/​​ – Katana24

+0

Try% słoik xvf foo.jar utworzona: META-INF/ napompowane: META-INF/MANIFEST.MF napompowane: HelloWorld.class a następnie spojrzeć na MANIFESTMF powinno wyglądać Manifest-Version: 1.0 Utworzono-By: 1.6.0_31 (Apple Inc.) Main-Class: HelloWorld –

3

może ten pomoże ponownie plik Manifest.txt:

Ostrzeżenie: Plik tekstowy musi kończyć się ne powrót do linii lub karetki. Ostatni wiersz nie zostanie poprawnie przeanalizowany, jeśli nie kończy się na nowej linii lub znaku powrotu karetki.

4

Tak, musimy użyć nowej linii na końcu nazwy klasy ...Pracował dla mnie

czyli Main-Class: HelloWorld

It will look like this in Notepad++ 
1.Main-Class: HelloWorld 
2. 
Powiązane problemy