当前位置: 首页 > 知识库问答 >
问题:

将IntelliJ配置为使用Groovy编译器而不是Java编译器

岳玉堂
2023-03-14

在我的 maven 项目中,我目前正在将我的 Java 代码与一些 Groovy 代码混合在一起。在这一点上,我主要使用Groovy来构建豆子。我的一些Java代码直接使用Groovy豆。

我这样配置Maven编译器插件:-

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <compilerId>groovy-eclipse-compiler</compilerId>
        <source>${jdk.version}</source>
        <target>${jdk.version}</target>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-eclipse-compiler</artifactId>
            <version>2.8.0-01</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-eclipse-batch</artifactId>
            <version>2.1.5-03</version>
        </dependency>
    </dependencies>
</plugin>

当我使用mvn test运行我的测试用例时,它工作得很好。

然而,当我通过右键单击测试文件直接从IntelliJ运行测试用例并运行它时,Groovy bean上会出现“找不到符号”错误。当我阅读错误日志时,IntelliJ在运行测试之前使用Java编译器编译我的项目…因此,测试失败。

我似乎想不出如何指示IntelliJ总是使用Groovy编译器而不是Java编译器。

我应该在SDK下做什么修改才能使用Groovy编译器?我尝试添加Groovy相关的JAR文件,但是我得到了其他错误。

更新1:根据@Seagull建议

我在“全球图书馆”下添加了Groovy JAR:-

当我直接从IntelliJ执行测试文件时,我收到了一些Groovy警告,但我仍然收到相同的错误:-

谢谢。

共有2个答案

林丁雷
2023-03-14

这是IntelliJ支持团队于2014年1月2日对此问题的回复:-

IDEA使用Groovyc为Groovy类生成Java存根,以实现无缝互操作。不幸的是,存根生成代码不会启动AST转换(例如不可变),因此这些转换生成的方法不会变成Java存根,因此Java编译器看不到它们。

不幸的是,我没有看到不需要修改项目的变通方法。一种方法是将Groovy文件放入一个单独的模块中。另一种方法是将调用位置更改为Groovy。第三种方法是将@Immutable替换为@Canonical,并生成构造函数,以便它实际上在代码中(存根将包含它)。

你也可以投票/观看http://youtrack.jetbrains.com/issue/IDEA-52379支持Eclipse Groovy编译器。

我最终删除了@Immutable@Canonical并创建了自己的构造函数,原因有两个:

  • 它允许我直接从 IntelliJ 运行我的测试用例。
  • 它清理了由@Immutable@Canonical免费提供的未使用构造函数引起的JaCoCo代码覆盖率报告。
高承望
2023-03-14

我在MAC 10.10.5,JDK 1.8.0_60的最新版本Intellij idea IC-15 . 0 . 3-custom-JDK-bundled . dmg上遇到了这个问题。

包括子孙后代的所有步骤。。。

  1. 从终端,我安装了最新版本的groovy,使用sdkman:sdk安装Groovy 2.4.5
  2. 在Intellij中,右键单击顶部项目
 类似资料:
  • 在IntelliJ2017中,我在中设置我的jdk路径。 这种设置在IntelliJ 2018中消失了。如何在IntelliJ2018中设置JDK的默认路径? 我知道我可能会在项目结构设置中设置它,但是,这个设置是特定于在Intellij中打开的实际项目的。我打算做的是为所有项目设置它。

  • 我使用maven命令来清理、构建整个项目、创建war并部署到服务器。我不能使用Intellij来做这件事,因为我只有社区版。它在与intellij相同的目录中构建项目。 为了加快速度,我编写了一个脚本,可以在本地“target”目录中找到比服务器中更新的已编译文件,并进行复制。虽然一切正常,但问题是Intellij并没有将使用maven编译的类视为应该跳过并重新构建整个项目的类。 目前它的工作原理

  • 使用命令行编译器 注解 这一节并不适用于 solcjs solc 是 Solidity 源码库的构建目标之一,它是 Solidity 的命令行编译器。你可使用 solc --help 命令来查看它的所有选项的解释。该编译器可以生成各种输出,范围从简单的二进制文件、汇编文件到用于估计“gas”使用情况的抽象语法树(解析树)。如果你只想编译一个文件,你可以运行 solc --bin sourceFil

  • 工具链介绍 gxnpuc 用于把模型文件编译成能在 NPU 上运行的 npu 文件。 usage: gxnpuc [-h] [-V] [-L] [-v] [-m] [-c CMD [CMD ...]] [config_filename] NPU Compiler positional arguments: config_filename config file optiona

  • 项目结构->项目->项目SDK:1.7下 项目结构->项目语言级别->7-方块、ARM、多重捕获等 在Project Structure->Modules下检查了每个模块,这并不有趣,因为大约有50个模块。来源选项卡->语言级别:项目detaulf(7-Diamonds、ARM、multi-catch等) 项目结构->模块,每个依赖项选项卡->模块SDK:Project SDK(1.7) proj