devxlogo

Simple Script to Run Java Applications on Linux and Windows

Simple Script to Run Java Applications on Linux and Windows

Unlike C/C++ compilers that produce binary executables, Java produces bytecode. Running bytecode can be difficult for regular users, particularly when the application requires external libraries.

There are several solutions to the problem; you can:

  • Create an executable JAR.
  • Create shell scripts.
  • Create another executable that invokes the Java application.

The first option is easiest, however it works only in Windows. In addition, archiver programs can override the default JAR file association, in which case the surprised user gets presented with the archiver UI and the guts of the program instead of the expected application.

Fortunately, creating a shell script supplies a quick solution to the problem?and it works fine in Windows, Linux, and even OSX. Here’s a script example:

C> type MyApp.bat@ECHO OFFSET BD=%~dp0SET CP=%BD%jdomjdom.jarSET CP=%CP%;%BD%swtswt.jarstart /B javaw -cp "%CP%" mypkg.MyApp-------------------------$ cat MyApp.sh#!/bin/shBD='dirname $0'CP=$BD/jdom/jdom.jarCP=$CP:$BD/swt/swt.jar...java -cp "$CP" mypkg.MyApp

To run the script in Windows, launch it with start to make the command prompt disappear.

Another—and possibly more elegant—way to avoid displaying the command prompt is to create an executable installer. Free tools such as NSIS are available for this purpose. Your installer then simply creates a menu icon that runs javaw directly. To avoid long classpath entries on the command prompt, you can include the classpath in a MANIFEST.MF file in the main JAR file.

For more information, see this NSIS tutorial.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist