【问题标题】:gradle: Cannot execute run because the property "mainClass" is not defined or emptygradle:无法执行运行,因为属性“mainClass”未定义或为空
【发布时间】:2016-06-23 16:48:41
【问题描述】:

project 可以通过 CLI 构建和运行:

thufir@mordor:~/NetBeansProjects/hello_client$ 
thufir@mordor:~/NetBeansProjects/hello_client$ gradle clean build;java -jar build/libs/hello_client.jar 
:clean
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 1.032 secs
hello world
thufir@mordor:~/NetBeansProjects/hello_client$ 

但 Netbeans 抱怨:

Executing: gradle run
Arguments: [-c, /home/thufir/NetBeansProjects/hello_client/settings.gradle]

:run
Cannot execute run because the property "mainClass" is not defined or empty.

BUILD SUCCESSFUL

Total time: 0.17 secs

为 Netbeans 插件设置主类的正确方法是什么?

【问题讨论】:

  • if (!hasProperty('mainClass')) { ext.mainClass = 'net.bounceme.mordor.Main' } 似乎修复了 Netbeans,但在 CLI 中对我不起作用。 stackoverflow.com/a/35061812/262852

标签: java netbeans gradle jar manifest


【解决方案1】:

在你的build.gradle文件中,你可以先应用application插件,

apply plugin: 'application'

然后指定要运行的主类:

mainClassName = 'net.bounceme.mordor.Main'

我不太了解 Netbeans 的具体内容,但 application 插件将为 run 任务提供必要的配置,以便从命令行运行,希望也可以从 Netbeans 运行。

请参阅 Gralde 用户指南中的此部分:https://docs.gradle.org/current/userguide/application_plugin.html

【讨论】:

  • 是的,我试过了,不知道为什么,但是那个插件导致了 gradle 构建问题。
  • 我刚刚尝试过,它适用于您提到的项目。从命令行运行gradle run
  • 我会玩的。这似乎带来了一个切线问题,所以在您回复之前我问了stackoverflow.com/questions/35890436/…。哈哈。我可以删除那个问题,也许太多了。
  • 嘿,以前从未做过拉取请求,所以只是复制/粘贴了您的解决方案。不过谢谢 :) Netbeans 现在从 IDE 运行 Java SE,这是一个额外的好处,但是,我不太确定这是使用插件的“官方”和正确方法.暂时有效。
  • 如果您想指定自定义应用程序参数,您可以将“cmd-line-args=my custom args”添加到属性 - 自定义变量,就像这里描述的那样:github.com/kelemen/netbeans-gradle-project/wiki/…
猜你喜欢
  • 2018-11-27
  • 2015-02-09
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
相关资源
最近更新 更多