externe .jar datei ausführen

lordraiddom

Mitglied
Also ich habe zwei .jar Applikationen, einmal den Server und den Client. Nun möchte ich, dass der Server, den Client automatisch startet nach einer bestimmten Aktion. Dies habe ich über Eclipse, bisher mit folgenden Zeilen gemacht:

Code:
String classpath = System.getProperty("java.class.path");
String path = "java -cp " + classpath + " com.p1.app.p2.executer.ExecuterClient ";
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", path);

Über Eclipse funktioniert dieser Code einwandfrei, da er mit -cp alle jar files und ihre Pfade mit übergibt.

Nun habe ich mit Maven ein Projekt erstellt (bzw eine Jar mit einer Manifest Datei).

Wenn ich nun meine fertige .exe Applikation (den Server) ausführe, versucht er natürlich den Client zu starten und gibt als ClassPath die Server Applikation an. Das ergibt natürlich den Fehler, dass er die Klasse ExecuterClient, in meiner Client.jar Datei nicht finden kann.

java -cp C:\Programme\App\AppJarFile.jar com.p1.app.p2.executer.ExecuterClient



Viel Text...

Kurz gefasst:

Die Server.jar soll eine Klasse in der Client.jar aufrufen und ausführen.

App\Server.jar
App\lib\Client.jar

Ich hoffe ihr könnt mir Helfen, bzw brauchbare Tipps liefern :suspekt::rolleyes:

Gruß
Martin

Edit: Also noch mal zum Maven Projekt: Es wird bestimmt für einige klar sein, aber für den rest noch mal. Meine ganzen eingebundenen .jar Files liegen im lib Verzeichnis und wurden in der Manifest Datei eingebunden.

Maven-Version: 1.1
Main-Class: com.p1.app.p2.ServerApp
Class-Path: lib/ClientJar-1.0.0.jar
lib/glpk-4.8.jar lib/jai_core-1.2.1.jar lib/jai_codec-1.2.1.jar lib
/JNIRegistry-CURRENT.jar lib/sdmgui-5.5.jar lib/jviews-util-lib-8.0.j
ar lib/jviews-maps-all-8.0.jar lib/jviews-framework-all-8.0.jar lib/j
views-diagrammer-all-8.0.jar lib/jviews-tgo-all-8.0.jar lib/quartz-1.
4.5.jar lib/hsviewer-CURRENT.jar lib/jhindexer-CURRENT.jar lib/jhsear
ch-CURRENT.jar lib/jh-CURRENT.jar lib/velocity-1.4.jar lib/batik-1.1.
1.jar lib/commons-digester-1.7.jar lib/commons-chain-1.0.jar lib/comm
ons-logging-1.0.3.jar lib/commons-pool-1.2.jar lib/commons-dbcp-1.2.1
.jar lib/commons-collections-3.1.jar lib/commons-configuration-1.1.ja
r lib/commons-beanutils-1.7.0.jar lib/commons-lang-2.0.jar lib/spring
-mock-1.2.5.jar lib/spring-1.2.3.jar lib/hibernate-3.0.5.jar lib/odmg
-3.0.jar lib/ehcache-1.1.jar lib/cglib-full-2.0.2.jar lib/antlr-2.7.5
.jar lib/jboss-j2ee-4.0.2.jar lib/concurrent-1.3.4.jar lib/xercesImpl
-2.7.1.jar lib/dom4j-1.5.2.jar lib/jdom-CURRENT.jar lib/dbunit-2.1.ja
r lib/junit-3.8.1.jar lib/gnu-regexp-1.1.4.jar lib/log4j-1.2.7.jar li
b/ojdbc14.jar lib/xdoclet-hibernate-module-1.2.3.jar lib/xdoclet-xdoc
let-module-1.2.2.jar lib/xjavadoc-1.1.jar lib/xdoclet-1.2.2.jar

Name: com/p1/app
Extension-name: com.p1.app
 
Zuletzt bearbeitet:
Moin, binde mal das Client.jar mit ein, damit der Server die Klasse findet:
String path = "java -cp " + classpath +";lib/Client.jar" + " com.p1.app.p2.executer.ExecuterClient ";
Ciao Thomas
 
Danke für die schnelle Antwort, leider Funktioniert dies auch nicht. :rolleyes:


Edit:

Fehler, nach 20 Stunden suchen, gefunden. In der Manifest Datei, des Clients, waren die " / lib " Verzeichnisse enthalten. So das er diese im Server Projekt unter " /lib/lib" sucht. Sehr ärgerlich, trotzdem Danke. Habe den Aufruf nun wieder zurück geändert (s.o.) und es läuft einwandfrei.

---

Gibt es eigentlich einen Unterschied zwischen "add jar" und "add variable", bei Eclipse Build Path? Sobald ich meine Client.jar als "add variable" einbinde, funktioniert dies nicht über Eclipse. Aber wenn ich die Jar als 'add jar' einbinde, gibt es keine Probleme bei Eclipse.
 
Zuletzt bearbeitet:
Zurück