我正在开发一个具有许多模块 jar 文件的项目,其中一个包含我的主类;我正在尝试编写一个 shell 脚本来设置类路径,然后启动应用程序;这是我的脚本。
#!/bin/sh
java -cp "modules/*;lib/*" com.example.Launcher
在此示例中,com.example.Launcher
是包含 public static void main(String[] args)...
我面临的问题是,当通过 ./myscript
执行我的脚本时,我给出输出
Error: Could not find or load main class com.example.Launcher
这很简单,类路径有问题吧?
但是如果直接从命令行执行
java -cp "modules/*;lib/*" com.example.Launcher
来自脚本的完全相同的命令,在脚本所在的目录中,一切正常。
有什么想法吗?
旁注
我通过 CygWin 运行它
另一个旁注
这可能是 CygWin 中 sh 的问题。我将此构建复制到 CentOS 计算机并尝试执行它,将 ;
更改为 :
允许从脚本执行。
即使进行了更改,问题仍然存在于我的 Windows 计算机上。
第三个旁注
问题又出现在 CygWin 中的 sh 上,我的最终解决方案是这样的:
launcher.sh 将使用类路径中的 :
调用 java
launcher.bat 将使用类路径中的 ;
调用 java
最佳答案
在类 Unix 系统上,分隔符是 :
(而不是 ;
)。改变
java -cp "modules/*;lib/*" com.example.Launcher
至
java -cp "modules/*:lib/*" com.example.Launcher
关于java - 为什么我无法从脚本执行我的 java 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32937855/