首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shell脚本: java程序在sh启动时找不到属性文件

shell脚本: java程序在sh启动时找不到属性文件
EN

Stack Overflow用户
提问于 2012-11-30 10:05:01
回答 2查看 2.6K关注 0票数 0

我将在第5版(Tikanga)下启动一个java程序。

目录结构:

  • bin ->sc.jar,start-sc.sh,sc all.jar
  • conf->log4j- sc.properties,sc.properties

命令来运行java程序(运行得很好)

代码语言:javascript
复制
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:../conf/log4j sc.properties -jar sc.jar -config ../conf/sc.properties

如果我把它放到shell脚本中,java程序就找不到这个支持文件了。shell脚本(start-sc.sh)如下所示:

代码语言:javascript
复制
#!/bin/sh
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:../conf/log4j-sc.properties -jar sc.jar -config ../conf/sc.properties

我是一个壳牌脚本新手,有什么想法,我错过了什么?太棒了!

EN

回答 2

Stack Overflow用户

发布于 2012-11-30 10:08:42

听起来不错,这个版本有用吗?

代码语言:javascript
复制
#!/bin/sh
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:$(pwd)/../conf/log4j-sc.properties -jar sc.jar -config $(pwd)/../conf/sc.properties

编辑#1:

在启动程序之前尝试放置以下内容:

代码语言:javascript
复制
echo `pwd`

输出告诉您在哪里运行脚本,因此可以检查它是否是正确的路径。

编辑2:

试试这个脚本

代码语言:javascript
复制
#!/bin/bash
LOG4JCONF="/absolute/path/to/the/log4j/conf/file"
SCCONF="/absolute/path/to/the/other/conf/file"

/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:$LOG4JCONF -jar sc.jar -config $SCCONF
票数 0
EN

Stack Overflow用户

发布于 2012-11-30 10:16:55

我猜您启动了shell脚本,而不是从dir start-sc.sh所属的bin目录启动的。

为了解释清楚,让我们举个例子。

比如说,你的剧本在这里:

代码语言:javascript
复制
/foo/bar/bin/start-sc.sh

如果您在/foo/bar/bin/下启动它,它(相对路径)应该可以工作。

但是,如果从/home/yourHome/someDir/启动脚本,则相对路径将指向$PWD/../,即/home/yourHome/

在启动java应用程序之前,您可以先在脚本中使用cd /foo/bar/bin/。或者做这样的事情:

代码语言:javascript
复制
a=`dirname $0`
if [ $a = '.' ];then
   a=`pwd`
fi
cd $a
/usr/java/jdkxxxx/java .....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13642962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档