I would like to have a Java application which can be easily started.
So far I have managed to create a jar file but I do not see any advantages yet. Before I run my application by "java HelloWorldSwing" and now I use "java -jar HelloWorldSwing.jar" (which is even more complicated than the previous command and, as far as I understood, the usage of a jar file requires presence of *.mf file in the same directory).
I would like to have one of the two following situations:
Just one single file which can be copied to another operation system and that the project can be started just by click on this file in a file browser (at the moment if click on my jar file Ubuntu starts to extract archive (because jar is an archive, I know)).
Create a pictogram which can be put on a desktop and clicking on which initiates my Java program.
Making a jar with no dependencies executable is relatively easy. You basically just need to specify in the MANIFEST
the main class to use. It can then be started with java -jar ExecutableJar.jar
, but most OS support double-click in this case.
Making a jar that depends on other jar executable is more tricky. You can specify the class path in the MANIFEST
, but it still means you need to copy more than one jar to distribute your app. Another way is to "pack" the depending jar in the main jar.
You can do all this with maven and the maven-assembly-plugin. Use the jar-with-dependencies
preconfigured descriptor.
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
The main class can be specified with something like:
<archive>
<manifest>
<mainClass>org.company.MyClass</mainClass>
</manifest>
</archive>
EDIT: A complete pom.xml
can be found in this question.
I actually really like how maven creates them: http://maven.apache.org/shared/maven-archiver/examples/classpath.html#Make
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With