我正在编写一个简单的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
。这可能是个问题吗?如果是这样,从命令行运行时如何工作?
答案 0 :(得分:0)
这最终成为我传递给JavaExec的jvmArgs之一的解析问题。摆脱令人反感的论点会使事情奏效。