I have to create a jar file wherein i need to add external jar files in the classpath, properties files, in such away as to run it on any other machine.
You could either use manifest.mf to define external class path or use script that composes classpath and runs your application.
I really recommend you to use a build tool such as Maven for these things:
http://maven.apache.org/
How can I create an executable JAR with dependencies using Maven?
Regards,
Boskop
You can make the jar in almost any IDE. I agree with Michael SchmeiBer, be a bit more specific please.
I use eclipse as my IDE (because you can both use it in windows and Ubuntu Linux) to make a jar (you can define the startup class in the jar).
I use different methods for starting up of different machines.
I use nsis to create a nice windows executable (.exe) You can include your own icon.
In nsis script you actually use the same command you would use in a batch command.
nsis has some nice features, like search for a java jre.
For Linux and Mac I use a .sh file with this command.
Related
Is there a way to bundle a spring-boot application into one executable jar including a JRE?
I think I saw someone doing that (Josh Long?) which resulted in a jar you could start via java -jar foo.jar and even with ./foo.jar
I googled for this the last hour but couldn't find any documentation on this, anyone there to help me out?
EDIT:
I just found what I saw at the conference. spring-boot 1.3 introduces something called executable jars, which wrap the jar with a shell script.
Enabling this makes it possible to run your jar like ./my.jar and tying it to an unix init system.
However, you still need java installed at your host.
Enabling this feature in gradle is as easy as adding this to your build.gradle
springBoot {
executable = true
}
You should think about using a Java installer / wrapper which will create a native binary which contains your code / jar and the JRE (some solutions can even download a JRE for you)
The positive side effect is that you (if needed) can create solutions for Linux, Windows and Mac.
If you want to stick to a simple Linux only solution you might want to try this: Bash script containing binary executable
Propably you are using Maven. This maven plugin allows you to create single jar file with all dependencies. Next you can use tool such as jwrapper which allows to build executable file with embeded JRE for many platforms.
I've developped a game during a Game Jam and I'd like to create an executable to distribute it to the other team members.
The game uses the slick2d and lwjgl library. I've tried to use JExePack, but the .exe file I get isn't runnable, I get an error while launching it.
Even the jar file gets me errors.
I'm only able to launch the game on the IDE. When I launch it with the command line : java -jar "game.jar", it obviously tells me that there's missing libraries, even if I indicate the path to the lib folder.
Is there an easy way to create an executable ?
Thanks in advance.
I think using a jar was a good idea.
You need to add every required jar in the classpath one-by-one for the jar to run properly.
Launch4J (http://launch4j.sourceforge.net/) is my favorite tool for that. You can just export an executable jar from your IDE and create an exe out of it. Creating an executable jar in Eclipse gives you the option to include all required libraries in it, which saves you from adding them manually when create the exe file. The minimal settings you need are:
Input (your executable jar)
Output (the .exe you want to create)
Minimum Java version (i.e. 1.6.0)
Thats it (as far as I remember)
If you want the exe you can use exe4j, it's a very useful tool, but i think using jars is better since you can run them on every platform. Anyway, when you export the jar, check on your ide's preferences if it automatically imports the libs. (for example, on eclipse you can pack the required libs into the exported jar)
You can use Luncher4j to create an exe file and convert the jar libraries to dll files.
I have created one java application which takes number of external jar files and also VM arguments passed to it.
I want to create .sh file for that application so that I cat run it on any linux system.
Please suggest me any tool to create .sh file in linux and which will also takes care about the arguments which has to be pass to application to run it.
I have use the tool named JarSplice but its not working as there is problem in loading libraries after creation of sh file .
So please suggest any tool for that.
If you're using maven to build your application there is a plugin called appassembler-maven-plugin that can create a .sh file for your application.
The groupId is org.codehaus.mojo.
You need to generate an executable jar, then you can simply run "java -jar main.jar" from there.
There are many questions on stackoverflow on how to create executable jars (you need ot set stuff in the MANIFEST.MF file in the jar file), for instance:
How do I create executable Java program?
Here is example to show what i mean: http://www.minecraft.net/download.jsp
If you open the Minecraft.exe with winrar you can see the jar manifest and classes and you can actually launch the jar like this java -jar Minecraft.exe
But when i tried to embed my jar to my own exe as resource (i can see the classes same way as in minecraft.exe with winrar) and launch it with java -jar it fails with message
invalid or corrupt jar file
How can i embed the jar to exe correctly? so it can be launched same way as minecraft.exe?
Use JSmooth. We use it with much success
There is a tool called Jar2Exe. I don't know if it's the same tool that Minecraft uses however.
Launch4j is another tool that supports this (with quite a few extra features such as auto-downloading a JRE if necessary).
I have the following jar files for my app:
DesktopApplication1.jar
Plus , i have used the some extra API's for my app , like jsoup, jexcelapi etc. There are about 7 api's in the lib folder.
How to make a EXE file & RPM file out of all these jar files?
P.S. I am a first timer. So take that into consideration.also, I have used Netbeans 6.8. So the main API is in \dist folder. And the API used is in \dist\lib folder.
thanks in Advance
use jsmooth to make exe from jar
Build your JAR with fatJar to include all the dependencies in it, and then make it executable with your favorite tool (I use Launch4j)
RPM is little bit different, since it is not executable, but package format. There are lots of tutorials, how you build it up.
You could make a BAT file a file with .bat(For windows) extension
Just open notepad and write the following text
java -jar DesktopApplication1.jar
Save the file as filename.bat(the .bat extension is important)
Place the .jar and .bat files together and just double click the .bat file every time you need to run the jar...
If you don't want to keep both together then give the absolute path of the jar in the .bat file
java -jar AbsolutePath/DesktopApplication1.jar
For a linux machine make a file with (.sh) extension rest of the procedure is same...
Try InstallJammer. It provides what you want.
Deploy the app. with Java Web Start. JWS Can make it easy to add other Jars to the apps. run-time class-path, avoiding the common problem with fat jar of violating the API's distribution license (when it says WTE 'you are allowed to distribute this in unaltered form..') and can provide the further benefit of only downloading the parts that the user requires (when the user requires them).
JWS has many other cool features like desktop integration (menu bars, start menu item), splash screens, automatic updates, support by the owners of Java, and compatibility with any platform for which Java is available.
For creating .exe to run on Windows:
Download launch4j from http://launch4j.sourceforge.net.
build wrapper .exe through launch4j.
Download innoSetup from http://www.jrsoftware.org/isdl.php.
Build .exe as installer, the setup file, for user to download and install.
Install rpm for linux:
If your application used other native libraries, you need to download and install Linux native libraries. This is how we build rpm for our app.