java启动器在bin目录_不同路径下shell脚本启动java程序时项目根目录问题

问题描述

将java项目打成tar.gz格式, 然后再Linux上解压缩, 文件目录:

./

-conf/

-bin/

-startup.sh

-lib/

-logs/

-README.md

我执行./bin/startup.sh启动java程序.

但是, 烦人的是:

启动脚本时路径不同, 项目的根目录就会不同.

tar根目录下执行sh bin/startup.sh时, java会将tar包根目录作为项目根目录.

代码中new File("logs/xx.log"), 会生成./logs/xx.log, 这是想要的预期效果.

但是, 挡在./bin/下执行sh startup.sh时, new FIle("logs/xx.log")就会在./bin/logs/下产生xx.log文件. 这显然不是想要的效果, 很恼人.

startup.sh

#!/bin/bash

current_path=`pwd`

case "`uname`" in

Linux)

bin_abs_path=$(readlink -f $(dirname $0))

;;

*)

bin_abs_path=`cd $(dirname $0); pwd`

;;

esac

echo "脚本位置: $bin_abs_path"

#base=${bin_abs_path}/..

base=$(dirname $(cd `dirname $0`;pwd))

echo "base path: $base"

export LANG=en_US.UTF-8

export BASE=$base

#can't run repeatedly

if [ -f $base/bin/addr.pid ] ; then

echo "found bin/addr.pid , Please run stop.sh first ,then startup.sh" 2>&2

exit 1

fi

## set java path

if [ -z "$JAVA" ] ; then

JAVA=$(which java)

fi

str=`file $JAVA_HOME/bin/java | grep 64-bit`

if [ -n "$str" ]; then

JAVA_OPTS="-server -Xms1024m -Xmx1536m -Xmn256m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError"

else

JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m "

fi

JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"

for i in $base/lib/*;

do CLASSPATH=$i:"$CLASSPATH";

done

#$JAVA $JAVA_OPTS -classpath .:$CLASSPATH com.jfai.addr.StartUp 1>>$base/bin/nohup.out 2>&1 &

$JAVA $JAVA_OPTS -classpath .:$CLASSPATH com.jfai.addr.StartUp 1>$base/bin/nohup.out 2>&1 &

echo $! > $base/bin/addr.pid

echo "Process addr is running..., pid=$!"

cd $current_path

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值