Jak stworzyć wykonywalny plik JAR?


Odpowiedzi:


83

Plik jar to po prostu plik zawierający zbiór plików java. Aby plik jar był wykonywalny, musisz określić, gdzie mainznajduje się klasa w pliku jar. Przykładowy kod wyglądałby następująco.

public class JarExample {

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // your logic here
            }
        });
    }
}

Skompiluj swoje zajęcia. Aby zrobić słoik, musisz również utworzyć plik manifestu ( MANIFEST.MF). Na przykład,

Manifest-Version: 1.0
Main-Class: JarExample

Umieść skompilowane pliki klas wyjściowych (JarExample.class, JarExample $ 1.class) i plik manifestu w tym samym folderze. W wierszu polecenia przejdź do folderu, w którym zostały umieszczone pliki, i utwórz jar za pomocą polecenia jar. Na przykład (jeśli nazwiesz swój plik manifestu jako jexample.mf)

jar cfm jarexample.jar jexample.mf *.class

Utworzy wykonywalny plik jarexample.jar.


34
Tylko moje dwa centy: niekoniecznie musisz tworzyć plik manifestu. W przypadku narzędzia jar , jeśli określisz flagę e zamiast m , wystarczy określić punkt wejścia (czyli główną klasę) aplikacji, a nie plik manifestu. Przykład:jar cvfe jarexample.jar com.example.jar.JarExample *.class
Powerslave

1
Jeśli tworzysz plik MANIFEST.MF, nie zapomnij zakończyć ostatniego wiersza podziałem wiersza. W systemie Windows po prostu dodaj pusty wiersz na końcu. W przeciwnym razie ostatni atrybut nie znajdzie się w pliku jar. W tym szczególnym przypadku będzie brakować atrybutu Main-Class.
David

36

W Eclipse możesz to zrobić w następujący sposób:

Kliknij prawym przyciskiem myszy projekt Java i wybierz opcję Eksportuj .

Wybierz Java -> Runnable JAR file -> Next.

Wybierz opcję Uruchom konfigurację i wybierz plik projektu jako klasę główną

Wybierz folder docelowy, w którym chcesz go zapisać, i kliknij przycisk Zakończ.


Uruchom konfigurację: <MainClasssName> - <
ProjectName

17

Tutaj jest w jednej linii:

jar cvfe myjar.jar package.MainClass *.class

gdzie MainClassjest klasa z mainmetodą i packagejest MainClasspakiet „s.

Pamiętaj, że przed wykonaniem tej czynności musisz skompilować swoje .javapliki do .classplików.

c  create new archive
v  generate verbose output on standard output
f  specify archive file name
e  specify application entry point for stand-alone application bundled into an executable jar file

Ta odpowiedź zainspirowana komentarzem Powerslave na temat innej odpowiedzi.


Otrzymuję błąd,Error: Could not find or load main class mtx.testClass Caused by: java.lang.ClassNotFoundException: mtx.testClass
Anton Stafeyev

Czy jest testClasszdefiniowany w jednym z twoich .classplików? Upewnij się, że skompilowałeś swoje .javapliki source ( ) przed uruchomieniem tego polecenia. Zwykle twoja klasa powinna być UpperCamelCase, możesz spróbować zmienić jej nazwę na TestClass.
Rzeka

4

Jeśli używasz maven, dodaj do swojego pliku pom.xml następujące polecenie :

<plugin>
    <!-- Build an executable JAR -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.YourMainClass</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Wtedy możesz biec mvn package. Plik jar zostanie umieszczony w katalogu docelowym .


Wariant niż powyżej.
Vishwa Ratna

0

Na to pytanie jest już za późno. Ale jeśli teraz ktoś szuka tej odpowiedzi, udało mi się uruchomić ją bez błędów.

Przede wszystkim upewnij się, że pobierasz i dodajesz mavena do ścieżki . [ mvn --version] poda specyfikacje wersji, jeśli poprawnie dodałeś do ścieżki.

Teraz dodaj następujący kod do projektu maven [ pom.xml], w poniższym kodzie zastąp własnym punktem wejścia do pliku głównego, np. [ Com.example.test.Test ].

      <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                    <mainClass>
            your_package_to_class_that_contains_main_file .MainFileName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

Teraz przejdź do wiersza poleceń [ CMD] w projekcie i wpisać mvn packagei wygeneruje plik jar jako coś podobnego ProjectName-0.0.1-SNAPSHOT.jarpod targetkatalogu.

Teraz przejdź do katalogu docelowego według .cd target

Na koniec wpisz java -jar jar-file-name.jari tak, to powinno działać pomyślnie, jeśli nie masz żadnych błędów w swoim programie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.