เมื่อทำการทดสอบ JUnit โดยใช้ IntelliJ IDEA ฉันจะได้รับ

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
- ใช้ SDK 1.7
- ระดับภาษาของโมดูลคือ 1.7
Maven build ทำงานได้ดี (นั่นเป็นเหตุผลที่ฉันเชื่อว่าสิ่งนี้ในปัญหาการกำหนดค่า IDEA)
เมื่อทำการทดสอบ JUnit โดยใช้ IntelliJ IDEA ฉันจะได้รับ

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
Maven build ทำงานได้ดี (นั่นเป็นเหตุผลที่ฉันเชื่อว่าสิ่งนี้ในปัญหาการกำหนดค่า IDEA)
คำตอบ:
เป็นไปได้ว่าคุณมีตัวเลือกคอมไพเลอร์ที่ไม่ถูกต้องซึ่งนำเข้าจาก Maven ที่นี่:

ตรวจสอบโครงการและโมดูล bytecode ( เป้าหมายด้วยการตั้งค่าเวอร์ชัน ) ที่ระบุไว้บนภาพ
สถานที่อื่น ๆ ที่กำหนดระดับภาษาต้นฉบับ :
Maven ระดับภาษาเริ่มต้นคือ1.5 (5.0) คุณจะเห็นเวอร์ชันนี้เป็นระดับภาษาโมดูลในภาพหน้าจอด้านบน
สิ่งนี้สามารถเปลี่ยนแปลงได้โดยใช้การกำหนดค่าmaven-compiler-pluginภายในpom.xml:
<project>
  [...]
  <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>
  [...]
</project>หรือ
<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>IntelliJ IDEA จะเคารพการตั้งค่านี้หลังจากที่คุณนำเข้าโครงการ Maven ในหน้าต่างเครื่องมือMaven Projects อีกครั้ง :
pom.xmlการกำหนดค่าปลั๊กอินคอมไพเลอร์ java ของคุณอาจระบุเวอร์ชัน Java ที่จะแทนที่การตั้งค่านี้ในครั้งต่อไปที่คุณทำการเปลี่ยนแปลง pom.xml (หากเปิดใช้งานการนำเข้าอัตโนมัติใหม่) หรือนำเข้าโครงการด้วยตนเองอีกครั้ง
                    คล้ายกับที่กล่าวถึงด้านล่างสำหรับ IntelliJ 13 และ 14 แต่มีระดับพิเศษในแผงการตั้งค่า / การตั้งค่า: การตั้งค่า > รูปร่าง, การดำเนินการปรับใช้ > คอมไพเลอร์ > Java คอมไพเลอร์
ใน IntelliJ 13 และ 14 ให้ตรวจสอบการตั้งค่า> คอมไพเลอร์> Java Compiler UI เพื่อให้แน่ใจว่าคุณไม่ได้กำหนดรุ่น bytecode ในโมดูลของคุณ

ในIntelliJ IDEA 14.1 "Target bytecode version" อยู่ในสถานที่ที่แตกต่างออกไป
การเปลี่ยนแปลงต่อไปนี้ทำงานสำหรับฉัน:
ไฟล์> การตั้งค่า ... > สร้างการดำเนินการปรับใช้> คอมไพเลอร์> Java คอมไพเลอร์ : เปลี่ยนเวอร์ชัน bytecode เป้าหมายจาก 1.5 เป็น 1.8


คุณได้ดูที่การกำหนดค่าการสร้างควรเป็นเช่นนั้นถ้าคุณใช้ maven 3 และ JDK 7
<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>ฉันพบปัญหานี้และการแก้ไขคือไปที่การตั้งค่าโครงการ> โมดูล> คลิกที่โมดูลเฉพาะ> แท็บการพึ่งพา ฉันสังเกตว่า Module SDK ยังคงตั้งค่าไว้ที่ 1.6 ฉันเปลี่ยนเป็น 1.7 และใช้งานได้
ฉันได้พบตัวเลือกที่ต้องการ ('target bytecode version') ในการตั้งค่า> คอมไพเลอร์> คอมไพเลอร์ javaในกรณีของฉัน (intelij ความคิด 12.1.3)
แก้ไขไฟล์การตั้งค่าคอมไพเลอร์ของโครงการในเส้นทางต่อไปนี้และเปลี่ยน 'เป้าหมาย' เป็น 1.7:
/project/.idea/compiler.xml
<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>ฉันแก้ไขมันโดยการตั้งค่าฟิลด์ว่าง:
การตั้งค่า> คอมไพเลอร์> คอมไพเลอร์ Java> เวอร์ชันโปรเจ็กต์ bytecode
กว่า IntelliJ ใช้รุ่นเริ่มต้นของ JDK
จากช่วงเวลาหนึ่งไปยังอีกฉันได้รับข้อผิดพลาดนี้โดยไม่มีเหตุผลชัดเจน ฉันเปลี่ยนการตั้งค่าทุกประเภทในคอมไพเลอร์ / โมดูลเป็นต้น แต่ในที่สุดฉันเพิ่งสร้างโครงการ IntelliJ ใหม่โดยนำเข้าโครงการ Maven อีกครั้งและปัญหาได้รับการแก้ไข ฉันคิดว่านี่เป็นข้อผิดพลาด
IntelliJ 12 129.961
ฉันได้รับสิ่งนี้หลังจากเพิ่งอัพเกรดเล็กน้อยจาก IntelliJ IDEA 14 เป็น v14.1 สำหรับฉันการเปลี่ยนแปลงการแก้ไขของ pom ช่วยให้ผู้ปกครองสูงสุดแล้วคลิกนำเข้าอีกครั้ง Maven (ถ้าไม่ได้โดยอัตโนมัติ)
แต่มันอาจจะเพียงพอที่จะคลิกขวาที่โมดูล / โมดูลรวม / แม่และ Maven -> นำเข้าใหม่
ฉันแก้ไขวิธีการร้อง
ไฟล์ >> โครงสร้างโครงการ >> โครงการ >> ระดับภาษาของโครงการ -> กำหนดเวอร์ชั่นที่เหมาะสม (เช่น: 1.5)
ทำเครื่องหมาย .idea / misc.xml บางครั้งคุณต้องเปลี่ยน languageLevel = "JDK_1_X" แอตทริบิวต์ด้วยตนเอง
หากเป็นโครงการ Gradle ในไฟล์ build.gradle ของคุณให้ค้นหาการตั้งค่าต่อไปนี้:
sourceCompatibility = "xx"
targetCompatibility = "xx"สำหรับ subrpojects ทั้งหมดในไฟล์ root build.gradle ของคุณคุณสามารถใส่:
subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}แม้ว่าคุณจะสามารถตั้งค่าระดับภาษาด้วยตนเองใน Idea> การตั้งค่าหากเป็นโครงการ Gradle, Idea จะซิงโครไนซ์ไฟล์ .iml จากโมดูลโดยอัตโนมัติจากการตั้งค่า Gradle (ทดสอบกับ Idea 15+) ดังนั้นการเปลี่ยนแปลงแบบแมนนวลทั้งหมดของคุณจะถูก overriden เมื่อมีการรีเฟรช gradle
อ้างอิงจากเอกสาร Gradleหากไม่ได้ตั้งค่าไว้จะใช้การกำหนดค่า JVM ปัจจุบัน
ฉันพบวิธีอื่นในการเรียกใช้ข้อผิดพลาดนี้ คุณสามารถได้รับสิ่งนี้หากคุณได้จัดโครงสร้างไดเรกทอรีของคุณอีกครั้งและหนึ่งในปอมของคุณชี้ไปที่ผู้ปกครองเก่าซึ่งไม่ได้กำหนดค่า javac อีกต่อไป (เนื่องจากการกำหนดค่านั้นถูกย้ายไปที่ระดับกลาง) หากสิ่งนี้เกิดขึ้นค่าเริ่มต้นระดับสูงสุดเป็น 1.5 และ pom ระดับล่างที่ทำงานผิดปกติจะสืบทอดมา
ดังนั้นอีกสิ่งหนึ่งที่ต้องตรวจสอบเมื่อคุณเห็นข้อผิดพลาดนี้คือโครงสร้าง pom ของคุณจับคู่โครงสร้างไดเรกทอรีของคุณอย่างถูกต้อง
ถ้า Maven build ทำงานได้ดีให้ลองซิงโครไนซ์โครงสร้างของโครงการ Maven และ IntelliJ IDEA
ในหน้าต่างเครื่องมือ Mavenคลิกปุ่มรีเฟรช คลิกปุ่มรีเฟรชเมื่อกดปุ่มนี้ IntelliJ IDEA จะวิเคราะห์โครงสร้างโครงการในหน้าต่างเครื่องมือ Maven
คลิกปุ่มรีเฟรชเมื่อกดปุ่มนี้ IntelliJ IDEA จะวิเคราะห์โครงสร้างโครงการในหน้าต่างเครื่องมือ Maven
โปรดทราบว่าการดำเนินการนี้อาจไม่ช่วยหากคุณใช้งาน EAP เนื่องจากคุณสมบัติการซิงโครไนซ์ Maven อาจใช้งานไม่ได้
ตรวจสอบให้แน่ใจว่าได้เลือกการพึ่งพาที่ถูกต้อง ไฟล์> โครงสร้างโครงการ
เลือกโครงการของคุณและไปที่แท็บการอ้างอิง เลือกการพึ่งพาที่เหมาะสมจากดรอปดาวน์หรือสร้างใหม่
หากโซลูชันก่อนหน้าทั้งหมดไม่ได้ผลสำหรับคุณ (ซึ่งเป็นกรณีของฉัน) คุณสามารถลบไฟล์กำหนดค่า Intellij:
Intellij จะสร้างใหม่ในภายหลัง อย่างไรก็ตามระวังให้ดีสิ่งนี้จะลบการกำหนดค่า Intellij ทั้งหมดที่ทำบน projet (เช่น: การกำหนดค่าของโหมดการดีบัก, ... )