14

I'm trying to run a jar application under Ubuntu, so I installed OpenJDK Java 7 Runtime, but when I open this application I got this message :

The file '/home/aimad/Programms/jMerise/JMerise.jar' is not marked as executable. If this was downloaded or copied from an untrusted source, it may be dangerous to run. For more details, read about the executable bit.

RolandiXor
  • 51,541
Croviajo
  • 1,154

5 Answers5

19

You can always run a jar file by doing java -jar JMerise.jar.

However, to make the jar file itself executable, you need to set the executable bit, as the message hints. chmod +x /home/aimad/Programms/jMerise/JMerise.jar will accomplish this.

After that you can do ./JMerise.jar to run it.

man chmod will provide you with information about how chmod works.

Also see: https://wiki.ubuntu.com/Security/ExecutableBit

Seth
  • 58,122
Gary
  • 3,914
  • 1
    Did this ever work? bash: ./bbb.jar: cannot execute binary file: Exec format error for file bbb.jar -> bbb.jar: Java archive data (JAR) – Harald Mar 19 '23 at 10:04
7

Right click on the file, click on properties, then go to the Permissions tab, and check the box that says "Allow executing this file as a program".

enter image description here

RolandiXor
  • 51,541
5

Since you run your jar application with java -jar application.jar then that means java is on your path. You need two simple things: 1) add an interpreter (which apparently is #!java -jar) in the first line of your jar file jut like you do that with your shell scripts: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

If you cat the contents of your jar file you'll see it starts with ex.: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) add execute attribute by chmod +x application.jar Now you are able to "self-run" it via ./application.jar.

gość
  • 51
4

First you'll need to make sure you have a suitable Java runtime environment on your system. Ubuntu has openjdk in the official repo which is 99.99% combatible with Oracle Java, to install it type:

sudo apt-get install openjdk-7-jre

Next create a file called java-jar-launcher.desktop in ~/.local/share/applications and put the following contents in it:

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

Next add the following line in ~/.local/share/applications/mimeapps.list:

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

Now you should be able to just double click jar files to launch them, if nothing happens then right click on a jar file, select properties then go to the "Open With" tab and there you should see "Java Application Launcher", select that.

This method is prefferable (IMHO) because this way you are not giving execute permissions to jar files which can be potentially dangerous. This method will only work in a graphical environment and needs the user to manually double click on the file.

tusharkant15
  • 1,223
0

If running a .jar file from the command line works (java -jar myFile.jar), but double-clicking it in the GUI does not, and if sudo chmod +x myFile.jar appears to succeed but you still can't open with double-click, and if right-clicking the .jar file > Properties > Permissions > "Allow executing file as program" does not work (i.e., the checkbox switches back just after you click it), then probably the .jar file is on an NTFS file system, which does not allow execute permissions on a per-file basis. (You may have this problem if you dual-boot, for example, and have a shared NTFS partition between Ubuntu and Windows).

Creating a launcher (as @tusharkant15 describes) will work because behind the scenes you're executing /usr/bin/java, not the .jar file itself. Moving the .jar file to some other file system that is not NTFS will also work.

drammock
  • 862