1

I've a Java console application with a lot of dependencies. I've to run it in production, so I created a runnable jar. The fact is that in order to run it, I need to write something like this:

java -classpath C:\Users\dandini\workspace\detror\target\classes;C:\Users\dandini\.m2\repository\mysql\mysql-connector-java\5.1.10\mysql-connector-java-5.1.10.jar;C:\Users\dandini\.m2\repository\org\hibernate\hibernate-entitymanager\4.2.4.Final\hibernate-entitymanager-4.2.4.Final.jar;C:\Users\dandini\.m2\repository\org\jboss\logging\jboss-logging\3.1.0.GA\jboss-logging-3.1.0.GA.jar;C:\Users\dandini\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\Users\dandini\.m2\repository\org\hibernate\hibernate-core\4.2.4.Final\hibernate-core-4.2.4.Final.jar;C:\Users\dandini\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\dandini\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.1_spec\1.0.1.Final\jboss-transaction-api_1.1_spec-1.0.1.Final.jar;C:\Users\dandini\.m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.0-api\1.0.1.Final\hibernate-jpa-2.0-api-1.0.1.Final.jar;C:\Users\dandini\.m2\repository\org\hibernate\common\hibernate-commons-annotations\4.0.2.Final\hibernate-commons-annotations-4.0.2.Final.jar;C:\Users\dandini\.m2\repository\org\javassist\javassist\3.15.0-GA\javassist-3.15.0-GA.jar;C:\Users\dandini\.m2\repository\commons-dbcp\commons-dbcp\20030825.184428\commons-dbcp-20030825.184428.jar;C:\Users\dandini\.m2\repository\commons-pool\commons-pool\20030825.183949\commons-pool-20030825.183949.jar;C:\Users\dandini\.m2\repository\c3p0\c3p0\0.9.1.2\c3p0-0.9.1.2.jar;C:\Users\dandini\.m2\repository\org\slf4j\slf4j-api\1.6.6\slf4j-api-1.6.6.jar;C:\Users\dandini\.m2\repository\org\slf4j\jcl-over-slf4j\1.6.6\jcl-over-slf4j-1.6.6.jar;C:\Users\dandini\.m2\repository\org\slf4j\slf4j-log4j12\1.6.6\slf4j-log4j12-1.6.6.jar;C:\Users\dandini\.m2\repository\log4j\log4j\1.2.15\log4j-1.2.15.jar;C:\Users\dandini\.m2\repository\commons-httpclient\commons-httpclient\20020423\commons-httpclient-20020423.jar uk.co.dandini.Detrot uk.co.dandini.Detrot

Isn't there a shorter way? How is it usually deployed and run in production?

user1883212
  • 7,539
  • 11
  • 46
  • 82

3 Answers3

1

Usually it's packed into an executable JAR which contains a manifest with a classpath which Java uses to load classes: How To Make A Java Exe File Or Executable JAR File.

Or you could created your own loader which sets the classpath for your app as it's done in Maven AppAssembler plugin (recommended).

Andrey Chaschev
  • 16,160
  • 5
  • 51
  • 68
1

You are using maven, so it's very easy. Probably the best option is to build a standalone "uberjar" which will contain all the dependencies, and will be runnable with just

java -jar myApp.jar

Please refer to this answer on StackOverflow.

Community
  • 1
  • 1
Marko Topolnik
  • 195,646
  • 29
  • 319
  • 436
0

you add the dependencies to the MANIFEST file http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

ManZzup
  • 526
  • 4
  • 12