2012-03-13 125 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。