【问题标题】:Trying to run a java application from a shell script on Ubuntu 10.04尝试从 Ubuntu 10.04 上的 shell 脚本运行 java 应用程序
【发布时间】:2012-03-28 21:36:36
【问题描述】:

我的 java 程序是在 Windows 机器上编写的,我正在尝试在 Ubuntu 10.04 机器上安装和运行它。我在其中创建了一个带有 myProgram.jar 的 .tar.gz 文件以及一个 lib 文件夹中的 5 个支持库 .jar 文件。我应该把这些文件放在哪里?我需要在 Linux 机器上将它解压到 usr/bin 文件夹吗? shell 脚本是否进入 tar.gz 中?我已经读过,如果您在 Windows 机器上编写 shell 脚本,一旦将其移动到 Linux 机器上就会出现问题,所以我正在使用 gedit 在 Linux 机器上编写 shell 脚本。我只是不确定下一步该做什么。 到目前为止,在我的脚本中,

#!/bin/bash 
java -jar myProgram.jar

我将尝试将 tar.gz 文件解压缩到 usr/bin 目录,看看它是否运行。 任何建议或帮助将不胜感激。 提前致谢, 雷

【问题讨论】:

    标签: java ubuntu-10.04


    【解决方案1】:

    你的问题很“广泛”:)。希望以下内容对您有用。

    不要将文件解压到 /usr/bin。参见例如http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard 关于不将文件放在 *nix 系统上的位置和位置。

    1. 将罐子提取到例如/opt/yourProgram/*.
    2. shell 脚本也应该在里面。确保其可执行(即 chmod 755 script.sh)
    3. 在您的 shell 脚本中添加 cd /opt/yourProgram 以便在调用 java 之前为您的程序提供正确的工作目录。
    4. 如果您希望每个人都可以轻松启动此程序,请在/usr/bin/usr/local/bin 中创建一个指向您的脚本的符号链接。在其他一切正常后,将此作为最后一步。

    在您的 shell 脚本中,您必须将其他 jar 添加到类路径中,例如

    java -cp lib/some.jar:lib/other.jar -jar myProgram.jar

    java -cp lib/some.jar:lib/other.jar:myProgram.jar com.acme.ClassContainingMain

    推荐做法:在脚本的最开头添加set -e

    正如您已经提到的,使用 Windows 编辑器编辑 shell 脚本被认为是有害的。原因是 Windows 编辑器将以不同的方式编码换行符(即您按 Return 键)。这将使 bash puke :)

    【讨论】:

    • 谢谢马丁。这绝对让我朝着正确的方向前进。如果我再次卡住,我将创建一个新问题。
    【解决方案2】:

    我不太清楚你在寻找什么。

    如果您将脚本和 myprogram.jar 放在同一级别,您编写的脚本应该可以正常工作。

    我也不确定你的 myprogram.jar 是如何引用依赖库的。所以不能评论他们。最好的办法是将您的脚本和所有 jar 放在一起并尝试运​​行该脚本。

    【讨论】:

    • 我已将我的脚本作为 myProgram.sh 保存在桌面上,这与我的 myProgram.jar 和包含其他 .jar 文件的 lib 文件夹相同。当我尝试通过双击运行 .sh 文件时,它会在 gedit 中打开它。如果我尝试使用“java -jar myProgram.jar”从终端运行 .jar 文件,我会得到“无法访问 jarfile myProgram.jar”。
    • *.sh 文件是否可执行?
    • 检查.sh文件是否有执行权限。然后输入 ./myProgram.sh
    • 感谢各位的帮助。对此,我真的非常感激。我仍然有麻烦。一旦我弄清楚我卡在哪里,我会发布一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多