2012-03-13 127 views
0

我有一个Unix shell脚本(bash),它提供了一些环境变量,然后给用户一些选择。基于用户输入,我调用一些执行特定操作的其他Unix shell脚本。我在下面的启动应用服务器选项中遇到问题。当我从main.sh执行appserver/run.sh脚本时,出现“无法访问jarfile start.jar”。当我直接导航到run.sh脚本并从其目录运行它时,它可以工作。 start.jar启动一个Jetty应用程序服务器。有关如何从main.sh执行run.sh的想法?Unix Shell脚本和Java Jar命令

权限:

-rw-r--r-- 1 colgray eng 42364 Jan 10 15:40 start.jar 

main.sh:

source ./setupenvironment.sh 
echo "Which Example would you like to run?" 
select yn in "one" "two" "start app server" "Quit" do 
    case $yn in 
     "one") ./examples/one/scripts/one.sh; break;; 
     "two") ./examples/twp/scripts/two.sh; break;; 
     **"start app server") ./examples/appserver/run.sh; break;;** 
     Quit) exit;; 
    esac 
done 

/examples/appserver/run.sh:

java -jar start.jar 

回答

1

既然你从比./examples/appserver的目录中运行,它不能找到jar文件:

<somewhere>      <-- this is where you are 
    |        ^
    +--> examples      | <- this is a distance too far :-) 
      |       v 
      +--> appserver  <- this is where start.jar is 

此基础上,你似乎是事实,从目录中运行它哪里examples生活(否则,相对路径是行不通的),您将需要

java -jar examples/appserver/start.jar 

或:

cd examples/appserver 
java -jar start.jar 

在您的run.sh文件中。

+0

更改到目录然后运行java -jar start.jar工作,非常感谢! – c12 2012-03-13 03:44:13

0

更改运行.sh使用绝对路径start.jar。