【发布时间】:2015-10-05 04:34:23
【问题描述】:
我正在开发一个包含许多 module jar 文件的项目,其中一个包含我的主类;我正在尝试编写一个 shell 脚本来设置类路径,然后启动应用程序;这是我的脚本。
#!/bin/sh
java -cp "modules/*;lib/*" com.example.Launcher
在本例中,com.example.Launcher 是包含 public static void main(String[] args)...的类...
我面临的问题是,当我通过./myscript 执行我的脚本时,我给出了输出
错误:无法找到或加载主类 com.example.Launcher
这很简单,类路径有问题吗?
但是如果我直接从命令行执行
java -cp "modules/*;lib/*" com.example.Launcher
脚本中的完全相同的命令,在脚本所在的目录中,一切正常。
有什么想法吗?
旁注
我通过 CygWin 运行它
另一个旁注
这可能是 CygWin 中的 sh 的问题。我将此构建复制到 CentOS 机器并尝试执行它,将; 更改为允许从脚本执行的:。
即使进行了更改,问题仍然存在于我的窗口机器上。
第三个旁注
再次出现问题在于 CygWin 中的 sh,我的最终解决方案是:
launcher.sh 将使用类路径中的 : 调用 java
launcher.bat 将在类路径中使用 ; 调用 java
【问题讨论】:
-
不确定命令行执行的原因,但尝试使用':'作为路径分隔符。
标签: java jar cygwin sh executable-jar