【问题标题】:Can't run Grails 4.0.1 cli with Java 11 - get null pointer error in stacktrace无法使用 Java 11 运行 Grails 4.0.1 cli - 在堆栈跟踪中出现空指针错误
【发布时间】:2019-11-30 18:18:17
【问题描述】:

我无法运行 grails 4.0.1 命令行来创建新应用等

我的环境:

  • Windows 10
  • Java 11.0.5 JDK
  • Grails 4.0.1
  • Groovy v3.0.0-rc-1

  • JAVA_HOME 设置(D:\Program Files\Java\jdk-11.0.5)

  • GRAILS_HOME 设置 (D:\dev-binaries\grails\grails-4.0.1)
  • GROOVY_HOME 设置(D:\dev-binaries\groovy\groovy-3.0.0-rc-1)

当我启动命令行并尝试启动 grails shell 时,我得到了(忽略 Java 11 反射警告)

| Error Error occurred running Grails CLI: null (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.NullPointerException
        at org.grails.cli.GrailsCli.initializeProfile(GrailsCli.groovy:515)
        at org.grails.cli.GrailsCli.initializeApplication(GrailsCli.groovy:306)
        at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:269)
        at org.grails.cli.GrailsCli.main(GrailsCli.groovy:159)
| Error Error occurred running Grails CLI: null

所以现在我被卡住了 - 我无法使用 grails shell,也无法运行“create-app”脚本

grails -version 似乎只工作并在命令行上报告这个

| Grails Version: 4.0.1
| JVM Version: 11.0.5

我该如何解决这个问题?如果可以避免,我宁愿不必还原所有版本。

【问题讨论】:

  • 刚刚查看了代码库及其此处 ``` String profileName = applicationConfig.get(BuildSettings.PROFILE) ?: getSetting(BuildSettings.PROFILE, String, DEFAULT_PROFILE_NAME) this.profile = profileRepository.getProfile( profileName)```
  • 看起来 profileRepository 可能为 null - 因此调用 getProfile () 会生成 NPE。 profileRepository 是一个声明的本地变量,但设置了任何初始值,所以当它试图在其他地方设置这个值时会失败。我正在使用 java 11 并收到有关 Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 的警告,不确定它是否因为此故障而失败?
  • 我现在没有设置在 Windows 上进行测试,但在 macOS 上我无法重现该问题。突出的一件事是您使用的是 Groovy 3.0.0-rc-1。您在使用 Groovy 2.5.6 时是否看到相同的行为?如果您可以隔离导致问题的项目组合,请通过github.com/grails/grails-core/issues 报告问题,我们可以对此进行调查。感谢您的反馈。
  • 一个有用的数据点是知道您是否在 start.grails.org 创建应用程序,然后在创建的项目中使用 grailsw 和 gradlew 包装器,这些工作是否有效,或者您是否也出现错误?
  • 嗨,杰夫——抱歉,耽搁了一个星期。我刚刚尝试使用 gradle wrapper 从启动 grails 开始的项目。它也无法构建错误FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':configureChromeDriverBinary'. > com.github.erdi.gradle.webdriver.repository.DriverUrlNotFoundException: Driver url not found for name: "chromedriver", version: "2.45.0", platform: "windows", bit: "64"

标签: grails nullpointerexception command-line-interface


【解决方案1】:

我们在升级到 Grails 4.0.3 时遇到了类似的问题。

我们的问题是因为我们的开发人员使用 Windows,而且似乎没有适用于 Windows 64 位的二进制文件。

我们将webdriverBinaries部分修改如下:

webdriverBinaries {
    chromedriver {
        version = '79.0.3945.36'
        if (Environment.current == Environment.DEVELOPMENT || Environment.current == Environment.TEST) {
            architecture = 'X86'
        } else {
            architecture = 'X86_64'
        }
    }
    geckodriver '0.24.0'
}

【讨论】:

    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    相关资源
    最近更新 更多