我正在编写一个简单的 Gradle 任务来在我的 build.gradle 文件中启动一个 java 应用程序。当我尝试使用--info
标志运行任务时,它会输出 java 命令,如下所示:
<JAVA_HOME>/bin/java -Xmx256M
-cp <ABSOLUTE_PATH_TO_ALL_LIBS>/launcherLib/launcherLib.jar:
<ABSOLUTE_PATH_TO_ALL_LIBS>/lib1/lib1.jar
com.hungryTux.launcher.LauncherClass 'launcherArg'
Gradle 然后抱怨无法加载或找到主类。我知道com.hungryTux.launcher.LauncherClass
该类存在于launcherLib
类路径中指定的 jar 文件中,并且其中有一个main
方法。确切的错误信息是Error: Could not find or load main class
。
更有趣的是,如果我从 Gradle 任务的输出中获取此命令并尝试直接在终端上运行它,它似乎会找到主类并正确启动应用程序。
此 Gradle 任务的工作目录是包含该build.gradle
文件的项目的根目录。当我尝试手动运行命令时,我从同一目录执行此操作。
我觉得我在 JavaExec 任务的工作方式上遗漏了一些明显的东西。我已经阅读了它的文档,但没有什么真正响起。
我应该指出,虽然com.hungryTux.launcher.LauncherClass
该类未指定为文件Main-Class
中META-INF/MANIFEST.MF
包含的launcherLib.jar
文件。这可能是一个问题吗?如果是这样,从命令行运行时如何工作?