【问题标题】:No signature of method: static org.akhikhl.gretty.ProjectUtils.getClassPath()没有方法签名:静态 org.akhikhl.gretty.ProjectUtils.getClassPath()
【发布时间】:2018-07-18 14:31:06
【问题描述】:

我正在尝试将我的 javaee 项目从 ant 迁移到 gradle。我的最终目标是能够通过 gradle 在码头上运行该项目。我想为此使用 gretty 插件。我在 Intellij IDEA CE 2018.1 中使用默认的 gradle 包装器

当我启动 gretty 的 appStart 任务时,出现错误:

Caused by: groovy.lang.MissingMethodException: No signature of method: static org.akhikhl.gretty.ProjectUtils.getClassPath() is applicable for argument types: (org.gradle.api.internal.project.DefaultProject_Decorated, null, java.lang.String) values: [project ':myProject', null, runtime]

我的项目目录结构与 gradle 期望的默认目录结构不同。我查看了gretty的源代码,异常来自;

gretty/libs/gretty/src/main/groovy/org/akhikhl/gretty/StartBaseTask.groovy:212

resolvedClassPath.addAll(ProjectUtils.getClassPath(proj, wconfig.inplace, runtimeConfig))

wconfig.inplace 部分返回null。我想我需要在我的build.gradle 文件中设置一些东西,但我不知道它是什么。我的文件内容:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.akhikhl.gretty:gretty:+'
    }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'ear'
apply plugin: 'org.akhikhl.gretty'

repositories {
    jcenter()

    flatDir {
        dirs '../Libs'
    }
}

sourceSets {
    main {
        java {
            srcDirs = ["src"]
        }

        resources {
            srcDir 'WebContent/resources'
        }
    }


    test{
        java {
            srcDirs=["test"]
        }
    }
}

dependencies {
    compile 'javax.servlet:javax.servlet-api:3.1.0'

    testCompile 'junit:junit:4.12'

    compile 'junit:junit:4.12'
    // more dependencies...
}


gretty {
    httpPort = 8080
    contextPath = '/myProject'
    servletContainer = 'jetty9'
    webAppDirName = '/WebContent'
}

我该如何解决这个问题?

提前致谢

【问题讨论】:

  • 很好奇 - 当您从 CLI ./gradlew 或仅从 IDEA 运行项目时,您能否重现此问题?您是否有一个从 CLI 重现问题的最小可共享项目?毕业版?顺便说一句,这看起来确实像一个错误。
  • 是的,我可以。我也可以通过使用gradle-4.9\samples\webApplication\quickstart 的gradle 的快速入门示例项目来重现这一点。奇怪的是,相同的项目在Linux 机器上运行没有问题。但我在 Windows 机器上收到此错误。

标签: gradle jakarta-ee intellij-idea gretty


【解决方案1】:

可能的 Gretty 错误。尝试将inplace = false 添加到您的配置中作为解决方法:

gretty {
  servletContainer = 'jetty9.4'
  httpPort = 8080
  inplace = false
}

【讨论】:

  • 不幸的是,这没有帮助。我会报告一个错误。
猜你喜欢
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
相关资源
最近更新 更多