从启动脚本设置classpath不起作用

时间:2016-09-21 07:46:09

标签: java bash classpath

我有一个bash脚本来启动我的应用程序。我的应用程序是一个捆绑为FAT Jar的spring应用程序,其中包含以下Manifest条目。

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

我把它放在文件夹/Users/nn/apps/myapp/instance1下。这个应用程序需要来自类路径的配置文件configs.yml,并且决定它应该在JAR文件之外。这就是我创建文件夹/Users/nn/apps/myapp/shared并将此configs.yml置于其中的原因。在我的启动脚本(start.sh)中,我添加了以下代码来设置类路径:

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

我得到configs.yml不在类路径中的异常(我的应用程序中的Spring bean尝试加载它会引发异常)。

我还尝试将-classpath明确传递给指向java的{​​{1}}命令。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下start.sh脚本:

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

请参阅https://stackoverflow.com/a/15930980/4473044