Grails 应用程序(配置文件 rest-api)在 Java 之前编译 Groovy 后出现问题

     2023-02-27     108

关键词:

【中文标题】Grails 应用程序(配置文件 rest-api)在 Java 之前编译 Groovy 后出现问题【英文标题】:Grails app (profile rest-api) went haywire after compiling Groovy before Java 【发布时间】:2018-07-02 04:35:11 【问题描述】:

在我的Grails 应用程序中,我通过添加此代码,明确使它在Java 之前编译Groovy

sourceSets 
    main 
        groovy 
            // override the default locations, rather than adding additional ones
            srcDirs = ['src/main/groovy', 'src/main/java']
        
        java 
            srcDirs = [] // don't compile Java code twice
        
    

build.gradle

添加这个sn-p后,应用开始报主类,

...
...
:findMainClass FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':findMainClass'.
> Illegal null value provided in this collection: [null]

当我运行gradle clean build

我试图像下面这样提供这个主类,

springBoot 
    mainClass = "foo.bar.Application" // The one in the grails-app/init

但还没有遇到另一个错误。

...
...
:classes
:findMainClass
:bootRunError: Could not find or load main class foo.bar.Application

任何帮助将不胜感激。

版本:

Gradle,3.4.1 Grails,3.2.8 Groovy,2.4.7 Java,1.8

【问题讨论】:

为什么要使用 Groovy 编译器编译 Java 源代码? @SzymonStepniak,我不必这样做。有没有其他方法可以在 Java 之前强制 Groovy 编译? 嗯,你有什么问题要解决吗?您的 Java 源代码知道 Groovy 源文件并直接使用它们,反之亦然。您的src/main/java 不能添加到sourcesSets.main.groovy,因为它包含Groovy 编译器无法编译的Java 文件。您可以尝试在main 闭包中更改sourcesSets.main.groovysourcesSets.main.java 的顺序,但我猜Gradle 并不关心main 体内的顺序。 问题是,Gradle 没有编译我的 Java 类并抱怨其中的 Groovy 类的引用。另一方面,IntelliJ 很好。我尝试过的解决方案似乎很流行,可能对 Grails 不是很有效。 Groovyc 在看到 .java 文件时会退回到 Javac。甚至鼓励将 .java 文件放入 .groovy 源根目录中,这样通常就不必处理来自运行的两个不同编译器的循环依赖。 【参考方案1】:

Java 不能原生使用 groovy 类。在实现互操作性之前,必须将它们编译为 JVM 字节码。如果你想在 java 中使用可重用的 groovy 代码,最简单的方法是将 groovy 库独立打包成 JAR 文件(jvm 字节码),并将其用作 JAR 依赖项。执行此操作时,您还需要 groovy sdk jar,以便 java“理解”groovy 签名。

【讨论】:

这将是开发的噩梦。实际上,我可以接受我所得到的——因为它不是在嵌入式容器中运行。 Spring Boot 由于某种原因无法加载主类。如果我以传统方式部署在 Tomcat 中,应用程序应该可以工作。

外部化 Grails 数据源配置

...urce.groovy中的数据库配置外部化(无需设置JNDI)?能够在应用程序外部的简单配置文件中配置数据库凭据 查看详情

如何从 grails 3.1.8 中的外部文件加载数据源配置?

...:2018-03-0916:58:37【问题描述】:我正在编写一个grails3.1.8应用程序。我的数据源写在application.groovy文件中。我想从外部文件加载数据源配置,如用户名、密码、数据库。有没有办法在grail 查看详情

我可以在没有数据源的情况下配置 Grails 吗?

...发布时间】:2010-11-2313:24:00【问题描述】:我有一个Grails应用程序,它从xml文件加载其数据并通过rome提供rss提要。我没有任何域类,我的应用程序没有数据源。当应用程序不需要它时,我不希望Grails加载内存中的hsqldb。删除DataS... 查看详情

将 grails 应用程序配置外部化到 tomcat conf 目录

】将grails应用程序配置外部化到tomcatconf目录【英文标题】:Externalizegrailsapplicationconfigurationtotomcatconfdirectory【发布时间】:2014-07-2317:10:15【问题描述】:我正在尝试外部化grails应用程序的配置。我已经成功外部化,配置文件在用... 查看详情

如何为 grails 插件配置日志记录?

...件,但我不知道应该在哪里配置日志记录。在普通的grails应用程序中,有一个conf/Config.groovy文件,但对于插件,则没有。还有其他方法可以实现吗?我希望在启动插件单元和集成测试时看到调试消息... 查看详情

面对空指针异常:无法在空对象上调用方法 firstMethod():Grails 3.2.10

...:42:50【问题描述】:我在Grails3.2.10版本中写了一个简单的rest-api控制器。下面是我的系统配置。创建的应用也 查看详情

使 WordPress 用户元数据可用于 Rest-API

...】:我正在构建一个与我的Wordpress网站RestAPI相关联的Ionic应用程序。虽然我已经弄清楚如何填充帖子和页面数据,但我很难填充用户数据。具体来说,我正在尝试通过名为UPME(用户配置文件变得简单)的第三方插 查看详情

Grails:使用配置文件初始化变量

】Grails:使用配置文件初始化变量【英文标题】:Grails:InitializevariableusingConfigurationfile【发布时间】:2014-09-1502:20:31【问题描述】:我只是想知道是否可以从配置文件(如config.groovy或其他配置文件)中设置Grails控制器中变量的值... 查看详情

将 Grails 部署到 AWS 错误 404

...发布时间】:2013-06-0919:52:17【问题描述】:我有一个grails应用程序。我没有战争文件。我只有文件夹和文件。我正在尝试安装它,但我遇到了问题。我正在使用的步骤是:我正在创建一个包含应用程序(文件和文件夹)的zip文件... 查看详情

grails Grails 单元测试中的应用程序访问

】grailsGrails单元测试中的应用程序访问【英文标题】:grailsApplicationaccessinGrailsunitTest【发布时间】:2012-11-3012:34:40【问题描述】:我正在尝试为使用grailsApplication.config进行一些设置的服务编写单元测试。似乎在我的单元测试中,... 查看详情

Grails 3.0.1 不支持 application.yml mongo 配置

...5-06-1609:45:02【问题描述】:尝试仅使用mongodb启动Grails3.0.1应用程序。mongo插件似乎没有读取application.yml文件中的mongo配置。我把它放在环境开发部分、环境部分之外等,但它只使用l 查看详情

外部化 Grails 应用程序的运行配置

】外部化Grails应用程序的运行配置【英文标题】:ExternalizingRunconfigurationsforGrailsapp【发布时间】:2019-06-0210:19:05【问题描述】:有没有办法通过Grails3应用程序将每个环境配置的运行配置外部化?我知道有运行配置参数允许人们... 查看详情

如何从grails3.1.8中的外部文件加载数据源配置?(代码片段)

我正在写一个grails3.1.8应用程序。我的数据源是用application.groovy文件编写的。我想从外部文件加载数据源配置,如用户名,密码,数据库。有没有办法在grails3+版本中做到这一点。这是application.groovy中的数据源配置:-hibernatecachequ... 查看详情

如何在 Grails 3 中使用外部 .groovy 配置文件

】如何在Grails3中使用外部.groovy配置文件【英文标题】:Howtouseexternal.groovyconfigfileinGrails3【发布时间】:2016-12-0308:33:25【问题描述】:ExternalizedConfiguration中的第24.3节表示.properties或.yml文件可用于外部配置,但我希望我的外部配... 查看详情

服务中的 Grails 消息源错误

...到了一点问题,我需要帮助。我正在grails3.3.11中开发一个rest-api,但我不能在服务中使用i18n的消息源。它只适用于我的控制器。message=messageSource.getMessage(\'documentPro 查看详情

使用 Grails 3 配置 CORS

...506:56:05【问题描述】:我正在尝试使用此插件在Grails3.1.12应用程序中启用CORS支持:https://github.com/appcela/grails3-cors-interceptor我遵循了文档,这是我在application.groovy中的安全配置:grails.plugin.s 查看详情

如何在 docker 容器中运行 grails-vue 配置文件?

】如何在docker容器中运行grails-vue配置文件?【英文标题】:Howtorungrails-vueprofilewithinadockercontainer?【发布时间】:2018-10-0903:13:48【问题描述】:我在dockerhub上为grails创建了一个docker镜像:https://hub.docker.com/r/dhobdensa/docker-alpine-grails/... 查看详情

如何从另一个 grails 插件配置 grails 插件

...:59:11【问题描述】:我正在尝试编写一个可以在多个grails应用程序中重复使用的插件。该插件基本上应该是springsecuritycore和ldap插件的包装器。这意味着它应该包含:用户/角色的域类springsecurity的配 查看详情