0

我正在编写一个简单的 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-ClassMETA-INF/MANIFEST.MF包含的launcherLib.jar文件。这可能是一个问题吗?如果是这样,从命令行运行时如何工作?

4

1 回答 1

0

这最终成为我传递给 JavaExec 的 jvmArgs 之一的解析问题。摆脱冒犯性的论点使事情奏效。

于 2018-06-22T18:29:25.967 回答