# Wie Java-Programm über Batch-file starten?



## smartin123 (23. Januar 2009)

Hi, 

ich hab im Forum schon geschaut und es gibt auch einige Beiträge dazu, aber leider komme ich immer noch nicht 
weiter. 

Ich versuche schon seit Tagen ein Java-Programm per Batch-File zu staren. Wichtig ist mir dabei, dass 
Pfade in dem Tool dynamisch sein sollen. 

Meine Lösung funktioniert, allerdings nur mit statischen Pfaden: 
set path=.;C:\Program Files\JAVA\JRE\1.5.0_07\bin 
java -Djava.library.path=C:\XYZ\calculator\libraries -jar starter.jar 


Warum ich Djava.library.path verwende, weil unter libraries dll files sind, die geladet werden müssen. 

Weiß jemand, wie ich pfade dynamisch angeben kann? 

In einem Ordner (die Bezeichnung ist variable) befindet sich die bat-Datei. Und in diesem Ordner ist ein weiterer Ordner names calculator. 

Wäre super, wenn mir jemand helfen könnte. 

Danke + Gruß 
smartin123


----------



## zeja (23. Januar 2009)

smartin123 hat gesagt.:


> set path=.;C:\Program Files\JAVA\JRE\1.5.0_07\bin



Das solltest du weglassen. Ich würde den Nutzer lieber darauf hinweisen, dass JAVA_HOME definiert und im PATH vorhanden sein muss.



smartin123 hat gesagt.:


> java -Djava.library.path=C:\XYZ\calculator\libraries -jar starter.jar
> 
> Weiß jemand, wie ich pfade dynamisch angeben kann?



Du meinst nicht dynamisch, sondern relativ würde ich mal denken.

Wenn die Batch-Datei im Ordner XYZ liegt verwendest du einfach

```
java -Djava.library.path=.\calculator\libraries -jar starter.jar
```
Der . steht für das aktuelle Verzeichnis


----------



## smartin123 (23. Januar 2009)

prima dankeschön.

Da hast du völlig recht, ich hab "relativ" gemeint  

Funktioniert super, nur noch eines, jetzt ist in dem selben Verzeichnis wo starter.jar sich befindet, dort ist eine weitere jar und propertie-file.

Zuvor über die statische Variante hat es funktionert, da wurden diese Dateien mit geladen. Nun wird eine exception geschmissen, mit dem Hinweis dass
die propertie nicht geladen werden konnte. Wie gehe ich denn jetzt vor?

So sieht die struktur aus:

ordner xyz : batch-file
|
--> ein weiterer ordner mit dem namen calculator.

In diesem Ordner calculator sind alle Dateien enthalten. (starter.jar + properties usw...)


----------



## smartin123 (23. Januar 2009)

Hat jemand noch eine Idee, wie ich properitie/java files in die bat-file einbinden kann?


----------



## zeja (23. Januar 2009)

Bitte unterlasse es zweimal hintereinander zu posten. Du bekommst schon eine Antwort...

Was willst du denn mit der Properties Datei anfangen?


----------



## smartin123 (23. Januar 2009)

ok sorry, wollt nur nachfragen, ob sich das Problem lösen lässt. Mein Pfad-Problem
ist nicht ganz so einfach und das war die Vorfreude, dass es vielleicht doch eine Möglichkeit gibt 

Es handelt sich um ein komplexes Tool, was properties-files enthält sowie jco, usw... 
Diese Bestandteile der Anwendung müssen aufgerufen werden, da dort Konfigurationen enthalten sind, oder über diesen Weg die Anbindung zum SAP erfolgt.

Wie ich schon geschrieben habe, erfolgt der Programmaufruf per bat-file, wo pfade statisch sind. Allerdings sind statische Pfade in der bat file unschön, da Endanwender (Nicht ITler) keine Ahnung haben, wie sie die pfade anpassen müssen.
Das versuche ich über relative Pfade zu umgehen.

Deshalb interessiert mich besonders, warum das hier funktionert:
set path=.;C:\Program Files\JAVA\JRE\1.5.0_07\bin
java -Djava.library.path=C:\XYZ\calculator\libraries -jar starter.jar 
--> hier werden, auch properties u.a. geladen

So leider noch nicht ganz:
java -Djava.library.path=.\calculator\libraries -jar .\calculator\starter.jar
--> hier wird starter.jar geladen, allerdings wird eine exception geworfen mit Fehler:
dass propertie nicht geladen werden kann.

Vielen Dank nochmal


----------



## zeja (24. Januar 2009)

Warum legst du eigentlich deine Batch-Datei nicht in das calculator Verzeichnis mit rein? Dann sollte das auch funktionieren.

Übrigens vorsicht bei den JCO-DLLs. Da reicht es leider nicht nur den library.path zu setzen, da er die librfc32.dll (ich glaube die wars) zuerst in Windows/system32 sucht. Wenn also eine SAP GUI installiert ist und die eine ältere Version hat, dann nimmt er die falsche dll und du bekommst nen Versionsfehler. Das ganze läßt sich umgehen indem du einmal beim Programmstart diese dll manuell lädst:
System.load("librfc32")

Dann nimmt er die aus dem library path. Ich hoffe ich habe das gerade so richtig in Erinnerung.


----------



## smartin123 (24. Januar 2009)

Ja, stimmt, wenn es nicht anders geht, dann werd ich das so machen müssen.
Ich wollt dem Anwender es ganz leicht machen, wenn nur eine Datei (bat-file) zu sehen ist, dann kann auch nur diese geöffnet werden. Wenn Anwender (keine IT-Fachleute)  versuchen das Progamm zu starten, dann weiß nicht jeder, dass die bat-file zu starten ist. Aber ist nur ein Schönheitsfleck.

Also dann sag ich, danke für deine Tipps zeja und ein schönes Wochenende


----------



## zeja (25. Januar 2009)

Dann leg eine Verknüpfung auf die Batch-Datei im übergeordneten Ordner an. Dann siehts schicker aus für den Nutzer, weils dann gar keine Batch-Datei mehr ist.


----------

