Jaka jest różnica w zaćmieniu między eksportowaniem do pliku JAR a eksportowaniem do pliku JAR, który można uruchomić? Czy nie są zdolni do uruchomienia? Jakie są zalety / wady każdego z nich?
87
Plik jar do uruchomienia zawiera plik MANIFEST.MF, który definiuje klasę Main, która ma być wykonana po uruchomieniu pliku jar.
Jary, których nie można uruchomić, to tylko biblioteki klas, które można dodać do ścieżki klas w celu ponownego wykorzystania kodu (zawiera również plik manifestu, ale nie ma tam głównej klasy)
Plik jar, który można uruchomić, to plik jar z osadzonym plikiem manifestu, który zawiera deklarację „Main-Class:”. „Klasa główna” musi być zdefiniowana, aby środowisko wykonawcze Java wiedziało, którą klasę wywołać, gdy plik jar zostanie „uruchomiony”. Jeśli plik jar nie zawiera manifestu z wartością „Main-Class:”, nie jest uważany za „runnable jar” - jest to po prostu biblioteka kodu Java.
Wydaje mi się, że jest to różnica w sposobie eksportu słoika przez Eclipse, ale nie jest to w 100% pewne.
Zobacz ten link, aby uzyskać więcej informacji: http://www.skylit.com/javamethods/faqs/createjar.html
źródło
W przypadku standardowego pliku JAR należy określić klasę za pomocą metody main w wierszu poleceń podczas uruchamiania pliku jar. W uruchamianym pliku JAR istnieje plik manifestu, który będzie zawierał te informacje, więc możesz po prostu wpisać
java -jar myRunnable.jar
lub po prostu kliknąć dwukrotnie.źródło
W moim przypadku eksportowałem jako jar, gdy miałem wszystkie główne klasy i wszystkie katalogi ścieżek bibliotek określone w pliku manifest.mf. Jeśli wiele aplikacji korzysta z tej samej biblioteki, nie ma potrzeby eksportowania biblioteki współdzielonej dla każdego pliku jar. To sprawia, że słoik do biegania jest szybszy. Jednak wiele razy z powodu problemów z konfiguracją w innej ścieżce klasy serwera nie można uzyskać dostępu do biblioteki iw takim przypadku sensowne jest wyeksportowanie uruchamialnego pliku jar, który powoduje, że plik wykonuje się wolno i jest duży.
źródło