IntelliJ IDEA 13 ใช้ Java 1.5 แม้จะตั้งเป็น 1.7


147

แม้จะระบุ JDK 1.7 ในการตั้งค่าโครงการทั้งหมด (รวมถึงFile -> Project Structure -> Project :: Project SDK) ข้อผิดพลาดต่อไปนี้เกิดขึ้นIntelliJ 13เมื่อพยายามรวบรวมรหัส Java 7 แบบง่าย ๆ ซึ่งใช้ตัวดำเนินการข้าวหลามตัด:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

มีสถานที่อื่นในการกำหนดค่าที่-source 7ควรเปิดใช้งานตัวเลือกที่คาดไว้หรือไม่


8
พยายาม: File -> Project Structure -> Project :: Project language levelเปลี่ยนเป็นDiamonds, ARM, multi-catch etc?
Adam Shakhabov

39
ใช่. ตามที่ปรากฎมีตัวเลือกอื่นภายใต้ไฟล์ -> โครงสร้างโครงการ -> โมดูล :: แหล่งที่มา (ถัดจากเส้นทางและการอ้างอิง) และที่มีตัวเลือก "ระดับภาษา" ซึ่งต้องตั้งค่าอย่างถูกต้อง ขอบคุณทุกคนสำหรับความคิดเห็นและคำตอบ! :-)
PNS


33
มี 3 สถานที่ที่จะต้องมีการปรับปรุง (1) ไฟล์ -> การตั้งค่า (Ctrl + alt + s สำหรับทางลัด) จากนั้น "Build, Execution, Deployment"> คอมไพเลอร์> Java Compiler และเปลี่ยน "Target bytecode version" เป็นเวอร์ชั่น Java ที่คุณต้องการ (2 และ 3) สถานที่อื่นอยู่ภายใต้ไฟล์> โครงสร้างโครงการ (Ctrl + Alt + Shift + S)> "การตั้งค่าโครงการ"> "โครงการ" เปลี่ยน SDK โครงการเพื่อชี้ไปที่เวอร์ชันที่เหมาะสมของ Java และตั้งค่าระดับภาษาของโครงการเป็น รุ่นที่ถูกต้อง การช่วยเหลือรหัสจะเปลี่ยนระดับภาษาของคุณเท่านั้นซึ่งน่าเสียดายที่ทำให้สิ่งนี้น่ารำคาญสำหรับโครงการใหม่
8bitme

2
จะทำอย่างไรถ้าฉันมีโมดูล 200 รายการในโครงการของฉันฉันต้องใช้เวลาตลอดทั้งวันในการรีไซเคิล

คำตอบ:


114

หากสิ่งนี้ไม่ช่วย (กรณีของฉัน) คุณสามารถตั้งค่าใน pom.xml ของคุณเช่นนี้

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

ในฐานะที่เป็นคนที่แต่งตัวประหลาดนี้กล่าวถึงที่นี่: https://stackoverflow.com/a/25888116/1643465


4
เป็นความคิดที่ดี แต่อย่าผูกมัดอย่างหนักกับโครงการที่ใช้ร่วมกันเว้นแต่ว่าคุณต้องการที่จะระเบิดการตั้งค่าของเพื่อนร่วมทีมทั้งหมด
แปลกประหลาด

8
สิ่งนี้แก้ไขปัญหาให้ฉันได้แล้วขอบคุณ! มันจะ "ระเบิดการตั้งค่าของเพื่อนร่วมทีม" ได้อย่างไร? หากเป้าหมายของโครงการคือ 1.7 แสดงว่าเป็น 1.7 มันไม่เหมือนเพื่อนร่วมทีมแต่ละคนมีสภาพแวดล้อมเป้าหมายที่แตกต่างกัน
isapir

1
เยี่ยมมากโครงการของฉันคือ maven
huuthang

1
สำหรับโครงการ maven ใหม่การตั้งค่านี้สามารถเพิ่มในโครงการ maven เริ่มต้น ใช้การตั้งค่า | บรรณาธิการ | แม่แบบไฟล์และรหัส | Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> ฟอรัมการสนับสนุน InteliJ
pRmdk

สิ่งนี้ได้ผลสำหรับฉัน แต่เมื่อฉันรีสตาร์ท IntelliJ ฉันพยายามสร้างโครงการใหม่เพียงอย่างเดียวและไม่ได้ผล
Metin Dagcilar

155

โปรดตรวจสอบระดับภาษาโครงการ / โมดูลของคุณ (โครงสร้างโครงการ | โครงการโครงสร้างโครงการ | โมดูล | โมดูลชื่อ | แหล่งที่มา) คุณอาจต้องการดูการตั้งค่า | คอมไพเลอร์ Java Compiler | รุ่น bytecode ต่อโมดูล

ตั้งค่านี้:

ไฟล์ -> โครงสร้างโครงการ -> โมดูล :: แหล่งที่มา (ถัดจากเส้นทางและการขึ้นต่อกัน) และมีตัวเลือก "ระดับภาษา" ซึ่งจำเป็นต้องตั้งค่าอย่างถูกต้อง


2
และตรวจสอบว่าAdditional command line parametersในJava Compilerการตั้งค่าว่างเปล่า
NeplatnyUdaj

2
หมายเหตุ: สิ่งที่สาม (ไฟล์ -> โครงสร้างโครงการ -> โมดูล :: แหล่งที่มา) เป็นสิ่งที่แก้ไขได้สำหรับฉัน
ปีเตอร์

ภาพหน้าจอที่เป็นประโยชน์ของกระบวนการนี้ในคำตอบนี้: stackoverflow.com/a/21747329/1146608
Patrick M

1
หากใช้ Maven จำเป็นต้องแก้ไข pom: stackoverflow.com/questions/27037657/…
Benj

11
+1 สำหรับระดับภาษา มีไม่ควรจะเป็นสถานที่มากมายให้ชุดและอีกชุดและชุดใหม่อีกครั้งเดียว # $% ^ สิ่ง!
G. Ann - ทีม SonarSource

52

[สำหรับ IntelliJ IDEA 2016.2]

ฉันต้องการขยายคำตอบของPeter Gromovด้วยภาพหน้าจอที่ทันสมัย โดยเฉพาะส่วนนี้:

คุณอาจต้องการดูการตั้งค่า | คอมไพเลอร์ Java Compiler | รุ่น bytecode ต่อโมดูล

ฉันเชื่อว่า (อย่างน้อยในปี 2559.2): ตรวจสอบการกระทำที่แตกต่างกันในการgitรีเซ็ตสิ่งเหล่านี้เป็น 1.5

รุ่น bytecode ต่อโมดูล


5
ฉันยอมแพ้ในการรักษาจำนวนที่ถูกต้องของพวกเขา (ด้วยเหตุผลบางอย่างที่พวกเขาเปลี่ยน - ฉันคิดว่าเมื่อฉันทำgit checkout) ฉันพบว่าฉันสามารถลบรายการในรายการนี้ได้อย่างปลอดภัย โมดูลกลับไปใช้ "Project bytecode version"
Birchlabs

ตัวเลขเหล่านี้กลับไปเป็น 1.5 สำหรับฉันโดยไม่คาดคิด การเข้ารหัสฮาร์ดโค้ดแหล่งที่มาและเวอร์ชันเป้าหมายของคอมไพเลอร์ในไฟล์ pom.xml ทำงานอย่างสม่ำเสมอ
sheldonkreger

สังเกตการตั้งค่า "Project bytecode version" ใกล้กับด้านบนของสกรีนช็อตนี้รวมถึงไฮไลต์ "Target bytecode version"
Basil Bourque

@ Birchlabs ขอบคุณฉันคิดว่านี่เป็นคำตอบที่ถูก
chrips

1
นี่เป็นทางออกเดียวที่แก้ไขปัญหาสำหรับฉัน IntelliJ IDEA 2019.1
João Rocha da Silva

19

อีกทางหนึ่งคุณสามารถใช้ maven-compiler-plugin กับจาวาเวอร์ชันที่เหมาะสมโดยเพิ่มสิ่งนี้ใน pom.xml ของคุณ:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

สิ่งนี้จะทำงานหลังจากออกจากการลบโครงการ. โฟลเดอร์และไฟล์. img ซึ่งทั้งหมดจะถูกสร้างขึ้นใหม่เมื่อเปิดโครงการอีกครั้ง
แอนดรู

1
การกดปุ่ม "รีเฟรช Maven" ในความคิดควรใช้งานได้
OlgaMaciaszek

@OlgaMaciaszek การรีเฟรชเป็นสิ่งจำเป็นสำหรับการแก้ปัญหาในการทำงาน ขอบคุณ!
เพน

14

ฉันพยายามทำการเปลี่ยนแปลง Intellij IDEA ดังนี้:

1

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

แต่ไม่มีอะไรทำงานมันกลับเวอร์ชันเป็น java 1.5 ทันทีที่ฉันบันทึกไว้

อย่างไรก็ตามการเพิ่มบรรทัดด้านล่างลงในรูท (ระดับโครงการ) pom.xml ทำงานให้ฉันแก้ไขปัญหาข้างต้น: (ตัวเลือกทั้งสองทำงานสำหรับฉัน)

ตัวเลือกที่ 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

ตัวเลือก 2:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

11

ไฟล์ -> โครงสร้างโครงการ -> การตั้งค่าโครงการ -> โครงการ -> ระดับภาษาของโครงการ

ไฟล์ -> โครงสร้างโครงการ -> การตั้งค่าโครงการ -> โมดูล -> ระดับภาษา

เปลี่ยนระดับโดยใช้แบบเลื่อนลง


4

ในบรรทัดคำสั่งของคุณ (เทอร์มินัล Unix) ไปที่โฟลเดอร์รูทโปรเจคและทำสิ่งนี้

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

สิ่งนี้จะเปลี่ยนคุณสมบัติระดับภาษาในไฟล์. img โครงการของคุณจาก java 1.5 เป็น java 1.8


ยังไม่แน่ใจ แต่คุณอาจต้องแทนที่รุ่น JDK ในcompiler.xmlที่รูทของโครงการ (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets

compiler.xml อาจเฉพาะโครงการของคุณ คำสั่งนี้มีเป้าหมายเฉพาะไฟล์ * .iml ที่ intellij ต้องการเท่านั้น คุณอาจต้องปรับการตั้งค่าภาษาใน maven pom.xml ของคุณหรือในกรณีของคุณ compiler.xml โดยไม่ขึ้นกับ IDE
Saideep Sambaraju

1
@SaideepSambaraju compiler.xml มีอยู่ในโครงการความคิดที่สร้างได้ที่ฉันเห็น จากสิ่งที่ฉันเห็นไฟล์นี้เป็นรูปแบบของการตั้งค่า> คอมไพเลอร์ (ลินุกซ์) การตั้งค่า -> คอมไพเลอร์ (MacOS) คุณสามารถใช้มันเพื่อเปลี่ยนเวอร์ชันเป้าหมายโดยสคริปต์ตามที่ Oleksandr พูดหรือด้วยมือโดยไม่มี UI
Sergey Sargsyan

@SergeySargsyan - ฉันเพิ่งตรวจสอบมันอยู่ในโฟลเดอร์. aidea ที่ฉันไม่พบด้วยการค้นหา ขอบคุณที่ชี้นำ
Saideep Sambaraju

2

ครั้งแรกที่คุณจำเป็นต้องเปลี่ยน "โครงการรุ่น bytecode" ภายใต้File > Settings,Compiler > Java Compiler

ประการที่สองทำการสร้างใหม่อย่างสมบูรณ์


2

ฉันมีปัญหาเดียวกัน แต่มีสถานการณ์ที่แตกต่าง ฉันสามารถรวบรวมได้โดยไม่มีปัญหากับ maven ใน command line ( mvn clean install) แต่ใน Intellij ฉันได้รับเสมอ"java: diamond operator is not supported in -source 1.5"ข้อผิดพลาดในการคอมไพล์แม้จะมีการตั้งค่า maven-compiler-plugin ด้วย java 1.8 ใน pom.xml

มันกลับกลายเป็นว่าฉันมีการตั้งค่าที่เก็บระยะไกลใน settings.xml ของ maven ซึ่งโครงการขึ้นอยู่กับ แต่ Intellij ใช้ maven ของเขาเองซึ่งไม่ได้มีการตั้งค่าเดียวกันกับ maven ท้องถิ่นของฉัน

ดังนั้นทางออกของฉันคือเปลี่ยนการตั้งค่า Maven ของ Intellij ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) เพื่อใช้ Maven ในเครื่อง


2

ใน IntelliJ Community Edition 2019.02 การเปลี่ยนการตั้งค่าต่อไปนี้ใช้งานได้สำหรับฉัน

  1. อัปเดตไฟล์ -> โครงสร้างโครงการ -> การตั้งค่าโครงการ -> โครงการ -> ระดับภาษาโครงการเป็น Java 11 (อัปเดตเป็นรุ่น Java ที่คุณต้องการใช้ในโครงการของคุณ) โดยใช้แบบเลื่อนลง

  2. อัปเดตไฟล์ -> โครงสร้างโครงการ -> การตั้งค่าโครงการ -> โมดูล -> ระดับภาษา

  3. อัปเดตไฟล์ -> การตั้งค่า -> Build, Execution, Deployment -> Compiler -> Java Compiler-> Project ByteCode Version เป็น java 11

  4. อัพเดตเวอร์ชันเป้าหมายสำหรับรายการทั้งหมดภายใต้ File-> Settings-> Build, Execution, Deployment -> Compiler -> Java Compiler-> Java Module รุ่นต่อไบต์


0

ฉันมีคุณสมบัติต่อไปนี้ใช้งานได้สำหรับฉันใน IntelliJ 2017

  <properties>
        <java.version>1.8</java.version>       
  </properties>

ใช้งานได้เฉพาะถ้าคุณใช้โปรเจ็กต์หลักเช่น spring boot's
wggn

0

อีกสิ่งหนึ่งที่อาจทำให้เกิดนี้จะมีที่ไม่ถูกต้องversionของ<parent>โครงการที่

ในกรณีของฉันมันชี้ไปที่โครงการที่ไม่มีอยู่และด้วยเหตุผลบางประการ IntelliJ ปรับลดรุ่นในการตั้งค่าเป็น 1.5 และใหม่กว่าเมื่อฉันแก้ไขมันยังคงตีความรุ่นรหัสเป้าหมายเป็น 5 (แม้จะตั้งค่าเป็น 11)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.