为什么我不能从脚本执行我的 java 项目?

Why can I not execute my java project from a script?

我正在开发一个包含许多 module jar 文件的项目,其中一个包含我的主要 class;我正在尝试编写一个 shell 脚本来设置 class 路径,然后启动应用程序;这是我的脚本。

#!/bin/sh
java -cp "modules/*;lib/*" com.example.Launcher

在此示例中,com.example.Launcher 是包含 public 的 class static void main(String[] args)...

我面临的问题是,当通过 ./myscript 执行我的脚本时,我给出了输出

Error: Could not find or load main class com.example.Launcher

这很简单,class路径有问题吧?

但是如果我直接从命令行执行

java -cp "modules/*;lib/*" com.example.Launcher

脚本中的完全相同的命令,在脚本所在的目录中,一切正常。

有什么想法吗?

旁注
我是 运行 这个来自 CygWin

另一个旁注
这可能是 CygWin 中 sh 的问题。我将此构建复制到 CentOS 机器并尝试执行它,将 ; 更改为允许从脚本执行的 :

我的 window 机器上的问题仍然存在,即使进行了更改。

第三个旁注
再次出现问题是CygWin中的sh,我的最终解决方案是:

launcher.sh 将在 class 路径

中使用 : 调用 java

launcher.bat 将在 class 路径

中使用 ; 调用 java

在类 Unix 系统上,分隔符是 :(不是 ;)。变化

java -cp "modules/*;lib/*" com.example.Launcher

java -cp "modules/*:lib/*" com.example.Launcher