Jak mogę wykonać plik .jar?

11

Próbuję uruchomić aplikację jar w systemie Ubuntu, więc zainstalowałem środowisko wykonawcze Java 7 OpenJDK, ale kiedy otwieram tę aplikację, pojawia się następujący komunikat:

Plik „/home/aimad/Programms/jMerise/JMerise.jar” nie jest oznaczony jako wykonywalny. Jeśli został pobrany lub skopiowany z niezaufanego źródła, jego uruchomienie może być niebezpieczne. Aby uzyskać więcej informacji, przeczytaj o bicie wykonywalnym.

Aimad Majdou
źródło

Odpowiedzi:

17

Zawsze możesz uruchomić plik jar, wykonując java -jar JMerise.jar.

Jednak, aby sam plik jar był wykonywalny, należy ustawić bit wykonywalny, jak wskazano w komunikacie. chmod +x /home/aimad/Programms/jMerise/JMerise.jarosiągnie to.

Następnie możesz zrobić, ./JMerise.jaraby go uruchomić.

man chmod dostarczy ci informacji o tym, jak działa chmod.

Zobacz także: https://wiki.ubuntu.com/Security/ExecutableBit

Gary
źródło
7

Kliknij plik prawym przyciskiem myszy, kliknij właściwości, a następnie przejdź do karty Uprawnienia i zaznacz pole „Zezwalaj na uruchamianie tego pliku jako programu”.

wprowadź opis zdjęcia tutaj

RolandiXor
źródło
Co jeśli nie mogę zaznaczyć tego pola powyżej, aby „zezwolić na uruchamianie pliku jako programu”? Sprawdzam, ale chwilę później automatycznie się odznacza!
user961627,
@ user961627 Prawdopodobnie plik .jar jest przechowywany na partycji, która nie obsługuje bitu wykonywalnego. Aby uzyskać więcej informacji, zobacz Nie można zrobić pliku wykonywalnego .
wjandrea,
4

Najpierw upewnij się, że masz odpowiednie środowisko wykonawcze Java w swoim systemie. Ubuntu ma openjdk w oficjalnym repozytorium, które jest w 99,99% kompatybilne z Oracle Java, aby zainstalować:

sudo apt-get install openjdk-7-jre

Następnie tworzymy plik o nazwie java-jar-launcher.desktopw ~/.local/share/applicationsi umieścić w nim następującą zawartość:

[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False

Następnie dodaj następujący wiersz ~/.local/share/applications/mimeapps.list:

application/x-java-archive=java-jar-launcher.desktop;

Teraz powinno być możliwe dwukrotne kliknięcie plików jar w celu ich uruchomienia. Jeśli nic się nie stanie, kliknij plik jar w prawym przyciskiem myszy, wybierz właściwości, a następnie przejdź do zakładki „Otwórz za pomocą” i tam powinieneś zobaczyć „Java Application Launcher”, wybierz .

Ta metoda jest preferowana (IMHO), ponieważ w ten sposób nie udzielasz uprawnień do wykonywania plików jar, które mogą być potencjalnie niebezpieczne. Ta metoda działa tylko w środowisku graficznym i wymaga ręcznego dwukrotnego kliknięcia pliku.

tusharkant15
źródło
2

Ponieważ uruchamiasz java -jar application.jarwtedy aplikację jar , oznacza to, że Java jest na twojej drodze. Potrzebujesz dwóch prostych rzeczy: 1) dodaj interpreter (który najwyraźniej jest #!java -jar) do pierwszego wiersza pliku jar jar tak, jak robisz to za pomocą skryptów powłoki: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

Jeśli wybierzesz zawartość swojego pliku jar, zobaczysz, że zaczyna się on od np .: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) dodaj atrybut wykonania do chmod +x application.jar Teraz możesz go „uruchomić” samodzielnie ./application.jar.

gość
źródło
0

Jeśli uruchamianie pliku .jar z wiersza polecenia działa ( java -jar myFile.jar), ale dwukrotne kliknięcie go w interfejsie GUI nie działa, a jeśli sudo chmod +x myFile.jarwydaje się, że powiodło się, ale nadal nie można otworzyć podwójnym kliknięciem i kliknięcie prawym przyciskiem myszy .jar plik> Właściwości> Uprawnienia> „Zezwalaj na uruchamianie pliku jako programu” nie działa (tzn. pole wyboru zmienia się zaraz po kliknięciu), prawdopodobnie plik .jar znajduje się w systemie plików NTFS, który nie zezwala na wykonywanie uprawnień na na podstawie pliku. (Ten problem może występować na przykład podczas podwójnego rozruchu i wspólnej partycji NTFS między Ubuntu i Windows).

Utworzenie programu uruchamiającego (jak opisuje @ tusharkant15) będzie działało, ponieważ za scenami, które wykonujesz /usr/bin/java, a nie sam plik .jar. Przeniesienie pliku .jar do innego systemu plików, który nie jest NTFS, również będzie działać.

drammock
źródło