เมื่อทำการทดสอบ 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
โปรดทราบว่าการดำเนินการนี้อาจไม่ช่วยหากคุณใช้งาน EAP เนื่องจากคุณสมบัติการซิงโครไนซ์ Maven อาจใช้งานไม่ได้
ตรวจสอบให้แน่ใจว่าได้เลือกการพึ่งพาที่ถูกต้อง ไฟล์> โครงสร้างโครงการ
เลือกโครงการของคุณและไปที่แท็บการอ้างอิง เลือกการพึ่งพาที่เหมาะสมจากดรอปดาวน์หรือสร้างใหม่
หากโซลูชันก่อนหน้าทั้งหมดไม่ได้ผลสำหรับคุณ (ซึ่งเป็นกรณีของฉัน) คุณสามารถลบไฟล์กำหนดค่า Intellij:
Intellij จะสร้างใหม่ในภายหลัง อย่างไรก็ตามระวังให้ดีสิ่งนี้จะลบการกำหนดค่า Intellij ทั้งหมดที่ทำบน projet (เช่น: การกำหนดค่าของโหมดการดีบัก, ... )