2016-09-21 3 views
0

Ich habe ein Bash-Skript, um meine Anwendung zu starten. Meine Anwendung ist eine Frühlingsanwendung, die als FAT Jar mit folgenden Manifest-Einträgen gebündelt ist.Das Festlegen des Klassenpfads von Startskript funktioniert nicht

Manifest-Version: 1.0 
Implementation-Title: My App 
Implementation-Version: 1.0-SNAPSHOT 
Implementation-Build: 0aef5a1f96de18795c76b896e349c741d9 
Implementation-Date: Sep 21, 2016 07:02:48 GMT 
Created-By: 1.8.0_77 (Oracle Corporation) 
Implementation-Vendor: App Team 
Main-class: com.demo.ApplicationInitializer 

Ich habe dies in einem Ordner /Users/nn/apps/myapp/instance1. Diese Anwendung benötigt eine Konfigurationsdatei configs.yml von Classpath und es wurde entschieden, dass dies außerhalb der JAR-Datei sein sollte. Dies ist der Grund, warum ich einen Ordner /Users/nn/apps/myapp/shared erstellt habe und diesen configs.yml darunter setzen. In meinem Startskript (start.sh) Ich füge Code nach dem Classpath zu setzen:

JAVA_CLASSPATH="/Users/nn/apps/myapp/shared:/Users/nn/apps/myapp/instance1" 
JAVA_CLASSPATH="$JAVA_CLASSPATH:/Users/nn/apps/myapp/shared/configs.yml" 
export CLASSPATH=$JAVA_CLASSPATH 

java <my_other_settings> -jar myapp-fatjar.jar 

ich Ausnahme erhalten, dass configs.yml nicht in Classpath ist (ein Spring-Bean in meiner app versucht, diese zu laden, die Ausnahme auslöst).

Ich habe auch versucht, übergeben -classpath zu java Befehl, der auf $JAVA_CLASSPATH zeigt.

Was mache ich falsch?

Antwort

1

Sie konnten die folgende start.sh Skript versuchen:

JAVA_CLASSPATH="/Users/nn/apps/myapp/shared:/Users/nn/apps/myapp/instance1" 
JAVA_CLASSPATH="$JAVA_CLASSPATH:/Users/nn/apps/myapp/shared/configs.yml" 
JAVA_CLASSPATH="$JAVA_CLASSPATH:myapp-fatjar.jar" 


java -cp $JAVA_CLASSPATH com.demo.ApplicationInitializer 

siehe https://stackoverflow.com/a/15930980/4473044

+0

Sein interessant zu wissen, dass sowohl '-cp' und' -jar' nicht kombiniert werden können. Und genau das war es, was mir Probleme bereitet hat. – Niranjan

Verwandte Themen