【问题标题】:Unix Shell Scripting and Java Jar CommandUnix Shell 脚本和 Java Jar 命令
【发布时间】:2012-03-13 03:33:32
【问题描述】:

我有一个 Unix shell 脚本 (bash),它获取一些环境变量,然后为用户提供一些选项。根据用户输入,我调用了其他一些执行某些操作的 Unix shell 脚本。我对下面的启动应用服务器选项有疑问。当我从 main.sh 执行 appserver/run.sh 脚本时,我得到“无法访问 jarfile start.jar”。当我直接导航到 run.sh 脚本并从其目录运行它时,它可以工作。 start.jar 启动一个 Jetty 应用服务器。有关如何从 main.sh 执行 run.sh 的任何想法?

权限:

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

ma​​in.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

【问题讨论】:

    标签: shell unix


    【解决方案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 文件中。

    【讨论】:

    • 切换到目录,然后运行 ​​java -jar start.jar 工作,非常感谢!
    【解决方案2】:

    更改 run.sh 以使用 start.jar 的绝对路径。

    【讨论】: