¿Cómo puedo hacer que un archivo .jar sea ejecutable?

11

Estoy tratando de ejecutar una aplicación jar en Ubuntu, así que instalé OpenJDK Java 7 Runtime, pero cuando abro esta aplicación recibí este mensaje:

El archivo '/home/aimad/Programms/jMerise/JMerise.jar' no está marcado como ejecutable. Si se descargó o copió de una fuente no confiable, puede ser peligroso ejecutarlo. Para más detalles, lea sobre el bit ejecutable.

Aimad Majdou
fuente

Respuestas:

17

Siempre puede ejecutar un archivo jar haciendo java -jar JMerise.jar.

Sin embargo, para que el archivo jar sea ejecutable, debe establecer el bit ejecutable, como lo indica el mensaje. chmod +x /home/aimad/Programms/jMerise/JMerise.jarlogrará esto.

Después de eso puedes hacer ./JMerise.jarpara ejecutarlo.

man chmod le proporcionará información sobre cómo funciona chmod.

Ver también: https://wiki.ubuntu.com/Security/ExecutableBit

Gary
fuente
7

Haga clic derecho en el archivo, haga clic en propiedades, luego vaya a la pestaña Permisos y marque la casilla que dice "Permitir ejecutar este archivo como un programa".

ingrese la descripción de la imagen aquí

RolandiXor
fuente
¿Qué pasa si no puedo marcar la casilla de arriba para "permitir la ejecución de archivos como un programa"? Lo compruebo, pero un momento después se desmarca automáticamente.
user961627
@ user961627 Probablemente tenga el archivo .jar almacenado en una partición que no admite el bit ejecutable. Consulte No se puede hacer que un archivo sea ejecutable para obtener más detalles.
wjandrea
4

Primero deberá asegurarse de tener un entorno de tiempo de ejecución Java adecuado en su sistema. Ubuntu tiene openjdk en el repositorio oficial que es 99.99% combatible con Oracle Java, para instalarlo escriba:

sudo apt-get install openjdk-7-jre

A continuación, cree un archivo llamado java-jar-launcher.desktopen ~/.local/share/applicationsy poner el siguiente contenido en ella:

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

A continuación, agregue la siguiente línea en ~/.local/share/applications/mimeapps.list:

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

Ahora debería poder hacer doble clic en los archivos jar para iniciarlos, si no sucede nada, haga clic derecho en un archivo jar, seleccione propiedades, vaya a la pestaña "Abrir con" y allí debería ver "Java Application Launcher", seleccione eso .

Este método es preferible (en mi humilde opinión) porque de esta manera no está otorgando permisos de ejecución a archivos jar que pueden ser potencialmente peligrosos. Este método solo funcionará en un entorno gráfico y necesita que el usuario haga doble clic manualmente en el archivo.

tusharkant15
fuente
2

Dado que ejecuta su aplicación jar con java -jar application.jareso, significa que Java está en su camino. Necesita dos cosas simples: 1) agregue un intérprete (que aparentemente está #!java -jar) en la primera línea de su archivo jar, como lo hace con sus scripts de shell: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

Si detecta el contenido de su archivo jar, verá que comienza con el ej .: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) agregue el atributo Ejecutar chmod +x application.jar ahora. Ahora puede " autoejecutarlo " a través de ./application.jar.

gość
fuente
0

Si funciona un archivo .jar desde la línea de comando funciona ( java -jar myFile.jar), pero hacer doble clic en él en la GUI no funciona, y si sudo chmod +x myFile.jarparece tener éxito pero aún no puede abrir con doble clic, y si hace clic derecho en el .jar archivo> Propiedades> Permisos> "Permitir ejecutar archivo como programa" no funciona (es decir, la casilla de verificación cambia de nuevo justo después de hacer clic en él), entonces probablemente el archivo .jar está en un sistema de archivos NTFS, que no permite permisos de ejecución en por archivo. (Es posible que tenga este problema si realiza un arranque dual, por ejemplo, y tiene una partición NTFS compartida entre Ubuntu y Windows).

La creación de un iniciador (como describe @ tusharkant15) funcionará porque detrás de escena está ejecutando /usr/bin/java, no el archivo .jar en sí. Mover el archivo .jar a otro sistema de archivos que no sea NTFS también funcionará.

drammock
fuente