我正在使用 IntelliJ IDEA Ultimate 2019.3.1 。每当我尝试启动任何简单的Java Maven项目(甚至可能是一个简单的Hello World)时,都会出现以下错误:
Error:java: error: release version 5 not supported
通过终端运行java --version
,我得到以下输出:
openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-0ubuntu1.1, mixed mode, sharing)
通过终端运行javac --version
,我得到以下输出:
javac 11.0.5
转到Java编译器的设置(如建议的here),我看到了:
我尝试将“ 目标字节码版本”编辑为 1.8 ,但出现以下错误:
Error:(1, 26) java: package javafx.application does not exist
Error:(2, 20) java: package javafx.stage does not exist
Error:(4, 27) java: cannot find symbol
symbol: class Application
Error:(12, 23) java: cannot find symbol
symbol: class Stage
location: class Main
Error:(7, 9) java: cannot find symbol
symbol: method launch(java.lang.String[])
location: class Main
Error:(11, 5) java: method does not override or implement a method from a supertype
将其更改为版本 1.11 ,我收到此错误:
Error:java: Source option 5 is no longer supported. Use 6 or later.
您认为问题出在哪里?我该怎么解决?
答案 0 :(得分:67)
请参见https://stackoverflow.com/a/12900859/104891。
首先,像这样设置language level
中的release versions
/ pom.xml
:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
否则,Maven会将默认值设置为1.5。如果还没有的话,还需要包括maven-compiler-plugin
:
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</dependency>
此外,尝试在以下每个位置更改Java版本:
文件->项目结构->项目->项目SDK-> 11。
文件->项目结构->项目->项目语言级别-> 11。
文件->项目结构->项目->模块->->源-> 11
在项目中-> ctrl + alt + s ->构建,执行,部署->编译器-> Java编译器->项目字节码版本-> 11
在项目中-> ctrl + alt + s ->构建,执行,部署->编译器-> Java编译器->模块-> 1.11。
答案 1 :(得分:30)
花点时间汇总一个实际的解决方案,但这是摆脱这种编译错误的方法。
打开IntelliJ首选项。
搜索“编译器”(或类似“ compi”的东西)。
向下滚动到Maven-> java编译器。在右侧面板中将列出 模块及其关联的Java编译版本“目标字节码版本”。
选择一个版本> 1.5。如果jdk不可用,则可能需要升级。
答案 2 :(得分:10)
默认情况下,您的“项目字节码版本未在maven项目中设置。
它认为您当前的版本是5。
解决方案1:
只需转到“项目设置>构建,执行...>编译器> java编译器”,然后将字节码版本更改为当前的Java版本。
解决方案2:
在POM文件中添加以下构建插件:
<properties>
<java.version>1.8</java.version>
<maven.compiler.version>3.8.1</maven.compiler.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
答案 3 :(得分:4)
我将以下代码添加到我的pom.xml
文件中。它解决了我的问题。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
答案 4 :(得分:4)
我做了上面的所有事情,但是不得不在IntelliJ中做另外一件事:
项目结构>模块
我不得不更改每个模块的“语言级别”
答案 5 :(得分:3)
如果您使用的是IntelliJ, 去设置=>编译器 并将版本更改为当前的Java版本。
答案 6 :(得分:3)
您应该通过以下任一方法再进行一次更改:
1 通过 IntelliJ GUI
正如 'tataelm' 所提到的:
项目结构 > 项目设置 > 模块 > 语言级别: > 然后更改为您的首选语言级别
2 直接编辑 IntelliJ 配置文件
通过编辑以下行直接打开 <ProjectName>.iml
文件(如果您使用 IntelliJ,它将在您的项目文件夹中自动创建),
来自:<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
至:<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
因为你的方法也意味着编辑这个文件。 :)
方法 1 实际上是要求 IntelliJ 帮助编辑 .iml 文件,而不是由您直接完成。
答案 7 :(得分:2)
您只需在 pom.xml 中添加这两行。之后,您的问题将消失。
<!--pom.xml-->
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
答案 8 :(得分:2)
已经在某些答案中定义了该问题的解决方案。但是仍然需要表达一个细节。问题完全与maven有关,解决方案也位于pom.xml配置中。 IntelliJ仅读取maven配置,如果配置信息错误,IntelliJ也会尝试使用该配置。
要解决此问题,如大多数答案所示,只需将以下属性添加到项目的pom.xml中。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
然后,在IntelliJ端,重新导入maven配置。要重新导入Maven配置,请右键单击项目的pom.xml文件,然后选择“重新导入”。 IntelliJ首选项中与编译器版本相关的信息将根据pom.xml中的值自动更新。
答案 9 :(得分:1)
如果您将spring boot用作父级,则应设置java.version属性,因为这会自动设置正确的版本。
int main() {
std::string s;
std::cin >> s;
for (std::size_t i = 0, size = s.size(); i < size; i++) {
std::cout << s.substr(0, i + 1) << std::endl;
}
}
在您自己的项目中定义的属性将覆盖父pom中设置的任何内容。这会覆盖所有必需的属性以编译为正确的版本。
一些信息可以在这里找到:https://www.baeldung.com/maven-java-version
答案 10 :(得分:1)
在我看来,唯一可行的解决方案是在null
中添加以下代码块:
array_values()
答案 11 :(得分:1)
又找到了一个需要更改的地方,这对我来说确实解决了。
Project Structure -> < Select Module > Dependencies -> Module SDK < Select version from drop down >
答案 12 :(得分:0)
我遇到了同样的问题,但略有不同。我的错误信息如下。
IntelliJ: Error:java: error: release version 16 not supported
所以在 Intellij 中转到
这里有一个名为“项目字节码版本”的字段。默认值为 16,我将其更改为 8,一切正常。
答案 13 :(得分:0)
For me in Intelij click on File -> Project Structure -> select the modules in language level select 11 - Local variable syntax for lambda parameters, click em aply.
Run in terminal mvn clean install.
它解决了我的问题。
答案 14 :(得分:0)
需要设置语言级别,发布版本,在pom.xml中添加maven编译器插件
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</dependency>
答案 15 :(得分:0)
就我而言,将这部分添加到pom.xml
文件中就足够了:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
答案 16 :(得分:0)
伙计们,在对此问题进行了大量研究之后,我也遇到了这个问题,我发现了3种解决方案来解决此问题
<properties><java.version>1.8</java.version<maven.compiler.version>3.8.1</maven.compiler.version<maven.compiler.source>1.8</maven.compiler.source<maven.compiler.target>1.8</maven.compiler.target><java.version>11</java.version></properties>
Remove everything below target byte version make it empty
然后在Java编译器中以目标字节版本写入您的版本 enter image description here
享受代码>>>希望为您工作
答案 17 :(得分:0)
在IntelliJ中,默认的maven编译器版本小于版本5,该版本不受支持,因此我们必须手动更改maven编译器的版本。
我们有两种定义版本的方法。
第一种方式:
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
第二种方式:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
答案 18 :(得分:0)
我已经完成了您使用Java编译器和字节码提出的大多数建议,并解决了过去的问题。 自从我运行Java代码以来已经快1个月了(那时一切都已修复),但是现在问题又出现了。 不知道为什么,虽然很生气!
这次解决方案是: 右键单击项目名称->打开模块设置F4->语言级别 ...然后您可以在其中定义项目/个人计算机的语言级别。
过去和现在,没有maven / pom配置对我有用,并且我已经将Java编译器和字节码设置为12。
答案 19 :(得分:0)
在IntelliJ中,打开pom.xml文件。
在<dependencies>
之前添加此部分(如果文件已经有<properties>
部分,只需将下面的<maven.compiler...>
行添加到该现有部分):
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
答案 20 :(得分:-1)
转到src文件夹/然后是主文件夹//然后是源文件///未标记目标文件夹为排除/////欣赏