IntelliJ附带的JetGradle插件显示我的项目存在冲突 . 它说我的IDE语言级别是1.7,而我的Gradle语言级别是1.6 .
以下代码为所有内容打印1.7:
compileJava {
println project.sourceCompatibility
println project.targetCompatibility
println sourceCompatibility
println targetCompatibility
}
从命令行运行Gradle工作正常 . 在IDEA中运行它也可以 . 这两个都使用1.7 JDK . 我的IDEA项目和模块也配置为使用1.7 .
当我通过Gradle构建脚本导入项目时,版本默认为1.6 . 我已将其更改为1.7 .
什么是“Gradle语言级别”,如何修改它?
谢谢!
3 回答
Gradle没有通过工具api公开语言级别,所以我认为这只是intellij中定义的“默认项目”语言 .
您可以在此_1506285中查看详细信息并追溯到相应的gradle问题
至于"how to fix it",我认为唯一真正的选择是不使用使用jetgradle并使用gradle idea plugin . Intellij 12.1将有一个much improved jetgradle plugin,但如果信息不在工具api上,那么很难看出如何解决这个问题 .
编辑:Gradle刚刚发布了一个2.11的RC(最后!)包括这个功能,详情请参见the release notes,这解释了这个工具api(即intellij jetgradle)和gradle idea插件的支持 .
我在这里玩游戏有点晚了,但我用它来解决这个问题:
然后使用
./gradlew idea
生成项目元数据,将项目语言设置为1.8 . 编辑:Gradle idea插件只处理基于文件的,而不是基于目录的(.idea /)元数据 . 如果将此应用于使用基于目录的元数据的现有项目,则需要清除项目根目录中的.idea /文件夹注意:将jdkName设置为“1.8”假定在Intellij中注册了一个名为“1.8”的Java SDK .
更新1:生成的ipr文件包含此块,表示使用Java 1.8(请注意'languageLevel'和'project-jdk-name'属性)
这应该与您在“项目结构”对话框中看到的内容直接对应:
更新2:在项目加载时,Intellij会提示您“导入Gradle项目” . 由于某种原因,这会忽略ipr文件中配置的语言级别,默认为1.6 . 解决这个问题的方法是预先配置ipr和适用的iml文件,以便它了解Gradle集成 . 这样,系统不会提示您导入Gradle项目,语言级别保持为1.8 . 上面的代码块已更新为包含必要的配置 .
它似乎不受支持,但它是一个简单的一次性修复 .
导航至:文件 - >项目结构选择"Modules"下
项目设置 . (应该已经是)将"Language level"更改为7.0
另外
深入查看文件中的实际编译错误 . 通常这类似于处理catch块中的多个错误 .
选择弹出的红色助手图标,然后"set language level to 1.7"