【问题标题】:Can't execute debug task in NetBeans after switching to Gradle切换到 Gradle 后无法在 NetBeans 中执行调试任务
【发布时间】:2014-05-02 00:34:09
【问题描述】:

我已经在 Netbeans 中安装了 Gradle-support 插件,我可以很好地构建和运行该项目。当我尝试在调试模式下运行时,我得到以下输出:

Executing: gradle debug

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

BUILD SUCCESSFUL

Total time: 0.222 secs

我正在使用:

 Oracle Java 1.8
 Gradle 1.12
 Netbeans 8.0
 Gradle-Support 1.3.0
 LinuxMint 16

为什么我不能运行我的调试器?

【问题讨论】:

  • 不应该缺少定义的mainClass也抑制项目的运行吗?

标签: java netbeans gradle netbeans-plugins


【解决方案1】:

添加类似的东西

if (!hasProperty('mainClass')) {
    ext.mainClass = 'com.foo.acme.Main'
}

到您的build.gradle。它将告诉 Gradle 插件在启动应用程序时使用哪个类。也许这应该可以在 UI 中自定义,但我现在看不到。

【讨论】:

  • 这似乎已经启动了应用程序,但它没有链接到本机库,这会导致异常。我需要再次显式设置 java.library.path 吗?
  • 我想。要么确保工作目录是你所期望的,要么设置java.library.pathLD_LIBRARY_PATH env var。我还没有尝试过它的原生库。
  • 我会将此标记为答案,我现在没有机会检查 lib 路径的内容,但这解决了原始问题。
  • 据我所知,运行时参数不在 UI 中;这是 Netbeans-Gradle 插件上的一个未解决问题。请参阅:Cannot pass arguments to main method 也可能存在其他尚未 IDE 类型的问题,例如:Gradle tasks should be started in own process - current directory should be netbeans project dir
  • Java 应用程序编程(包括服务器端)的一个普遍问题是,作为开发人员,您的构建/编译环境可能需要不同的运行时上下文。所以它不仅仅是参数和工作文件夹;存在库和 ClassPath 问题; JNI 上下文、AppServer 版本和上下文等。在这里我向 JetBrains 脱帽致敬,他们通常似乎涵盖了所有选项。
【解决方案2】:

此问题的另一个解决方案是创建一个新的调试任务。类似于 gradle run 任务,您只需将以下任务添加到您的 build.gradle 文件中:

task debug(dependsOn: classes, type: JavaExec) {
    main = project.mainClassName
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
    debug = true
}

【讨论】:

  • 这解决了我的问题。这是一件奇怪的事情。我将 main() 类子项目移动到不同的根项目。 run 命令仍然有效。 debug 停止工作。在定义了这个task debug()... 之后,很明显问题是workingDir 没有被设置为正确的路径。而run{ } 任务设置正确的workingDir。到现在为止,我认为调试是一个将debug 标志设置为true 的运行。显然没有。
【解决方案3】:

除了Radim's answer之外在Netbeans UI中自定义mainClass参数的方式。

在 Netbeans gradle 项目的属性中,转到“内置任务/调试”,取消单击“继承”并将“-PmainClass=aaa.bbb.ccc”添加到参数中。

我想这也应该为运行任务完成。

和run/debug单个文件一样,已经把选中的文件作为参数mainClass。

【讨论】:

    【解决方案4】:

    我有一个 similar problem 并且能够将其设置为“NetBeans 不应自动添加任务”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 2012-07-07
      • 2013-08-09
      • 2011-03-31
      • 2017-02-15
      相关资源
      最近更新 更多