Intellij IDEA Java classes ไม่ได้รวบรวมการบันทึกอัตโนมัติ


182

เมื่อวานนี้ฉันเปลี่ยนเป็น IntelliJ IDEA จาก Eclipse

ฉันกำลังใช้ JRebel กับ WebSphere Server 7 เช่นกัน

ตอนนี้ดูเหมือนว่าทุกอย่างจะทำงานได้ดียกเว้นว่าเมื่อฉันแก้ไขไฟล์ Java และกดบันทึก IntelliJ จะไม่รวบรวมไฟล์อีกครั้งเพื่อให้ JRebel หยิบมันขึ้นมา

คุณลักษณะ " สร้างโดยอัตโนมัติ " ของEclipse สามารถแก้ไขปัญหานี้ได้

ในความคิด IntelliJ ผมต้องตีCTRL+ SHIFT+ 9รวบรวมอีกครั้งระดับที่เกี่ยวข้องสำหรับ JRebel หยิบมันขึ้นมา หากมีการเปลี่ยนแปลงในสองไฟล์ฉันจะต้องทำสิ่งนี้กับแต่ละไฟล์และเนื่องจาก IntelliJ ใช้กลไกการบันทึกทั้งหมดมันค่อนข้างยากที่จะรู้ว่าจะต้องคอมไพล์ใหม่ด้วยตนเองซึ่งฉันไม่ได้สนใจทำเช่นนั้น

ไม่มีวิธีที่จะทำให้ IntelliJ ทำสิ่งนี้ด้วยตัวเองได้หรือไม่?


11
ทำไมคุณไม่เพียงแค่กดCtrl+ F9? ที่จะสร้างโครงการทั้งหมดและหากมีเพียงสองไฟล์ที่เปลี่ยนไปไฟล์เหล่านั้นจะถูกสร้างใหม่
maba

2
ฉันกลัวว่ามันจะสร้างใหม่ทั้งหมด ฉันเชื่อว่าค่าเริ่มต้นคือผลลัพธ์ที่ชัดเจนในการสร้างใหม่ ... ดังนั้นโดยปกติจะใช้งานได้ไม่ดี ...
mmm

5
มันไม่ได้ทำความสะอาดก่อนที่จะสร้าง มันเป็นงานสร้างที่เพิ่มขึ้น คุณมีทางเลือกอื่นเพื่อสร้างใหม่หากต้องการ
maba

คำตอบ:


251

ปรับปรุง

สำหรับรุ่น IntelliJ IDEA 12+ เราสามารถสร้างแหล่งที่แก้ไขโดยอัตโนมัติหากเราใช้ตัวเลือกคอมไพเลอร์ภายนอก สิ่งเดียวที่จำเป็นคือการตรวจสอบตัวเลือก " สร้างโครงการโดยอัตโนมัติ " ซึ่งอยู่ภายใต้การตั้งค่า " คอมไพเลอร์ ":

การตั้งค่าคอมไพเลอร์

นอกจากนี้หากคุณต้องการปรับใช้อย่างร้อนแรงในขณะที่แอปพลิเคชันทำงานอยู่หรือหากคุณกำลังใช้ devtools ของบู๊ตสปริงคุณควรเปิดใช้งานcompiler.automake.allow.when.app.runningจากรีจิสตรีด้วย สิ่งนี้จะรวบรวมการเปลี่ยนแปลงของคุณโดยอัตโนมัติ

การใช้Ctrl+ Shift+ A(หรือ+ Shift+ Aบน Mac) Registryเมื่อเปิดหน้าต่างรีจิสทรีค้นหาและเปิดใช้compiler.automake.allow.when.app.runningงานดูที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่


สำหรับเวอร์ชันที่เก่ากว่า 12 คุณสามารถใช้ปลั๊กอินEclipseModeเพื่อทำให้ IDEA รวบรวมไฟล์ที่บันทึกโดยอัตโนมัติ

สำหรับเคล็ดลับเพิ่มเติมโปรดดูที่"การย้ายจาก Eclipse เพื่อ IntelliJ IDEA"คู่มือ


10
รู้สึกรำคาญที่ฉันต้องติดตั้งปลั๊กอินสำหรับสิ่งนี้ ฉันใช้ไปแล้วเมื่อวานและวันนี้ ฉันหวังว่าพวกเขาจะสามารถสร้างตัวเลือกสำหรับสิ่งนี้ได้ฉันไม่คิดว่า Eclipse จะมีสิทธิบัตรในคุณสมบัตินี้ใช่ไหม ฉันสามารถแมปใหม่ที่ CTRL + S เพื่อบันทึกได้โดยอัตโนมัติ ฉันจะลองสองสามตัวเลือก ขอบคุณ
mmm

14
นี่มันช้า นี่ช้าเกินไป มีห้องพักสำหรับการปรับปรุงมาก! ฉันไม่ใช่สิ่งที่ทำในพื้นหลัง แต่ใช้เวลา Intellij ประมาณ 3-4 วินาทีในการรวบรวมการเปลี่ยนแปลงเล็กน้อยในชั้นเรียนเดียว แม้แต่ "Compile 'StartController.java'" ก็หมายถึงชั้นหนึ่งใช้เวลาเพียง 3-4 วินาทีเท่านั้น Eclipse ทำสิ่งนี้ในเวลาน้อยกว่า 100 มิลลิวินาที ฉันจะทดสอบโหมดคราสปลั๊กอินอีกครั้งและตัดสินใจว่าจะไปกับ ..
mmm

34
"ทำให้โครงการโดยอัตโนมัติ" ใช้งานได้เฉพาะเมื่อไม่ได้ทำงาน / ดีบั๊ก
xenoterracide

8
ไม่ได้ผลสำหรับฉันกับ Intellij 2017.1.3 และ spring boot devtools
Nico de Wet

1
ไม่ทำงานกับ IntelliJ IDEA 2017.3.3, Java 9.0.4, Spring Boot 2.0.0.RC1, Spring devtools :(
ทำ Nhu Vy

75

โปรดปฏิบัติตามทั้งสองขั้นตอน:

1 - เปิดใช้งาน Automake จากคอมไพเลอร์

  • กด: ctrl+ shift+ A(สำหรับ Mac + shift+ A)
  • ประเภท: make project automatically
  • ตี: Enter
  • เปิดใช้งานMake Project automaticallyคุณสมบัติ

2 - เปิดใช้งาน Automake เมื่อแอปพลิเคชันทำงาน

  • กด: ctrl+ shift+ A(สำหรับ Mac + shift+ A)
  • ประเภท: Registry
  • ค้นหาคีย์compiler.automake.allow.when.app.runningและเปิดใช้งานหรือคลิกช่องทำเครื่องหมายถัดจากคีย์

หมายเหตุ: รีสตาร์ทแอปพลิเคชันของคุณทันที :)

หมายเหตุ: สิ่งนี้ควรอนุญาตการโหลดแบบสดด้วย dev boot ของ spring boot


2
สมบูรณ์แบบนี่เป็นเพียงสิ่งที่ฉันกำลังมองหา =)
eitch

3
สิ่งนี้ใช้ได้กับฉันด้วย spring-boot-devtools และ IntelliJ IDEA 2016.2.5
Xaero Degreaz

2
ถูกต้องดังนั้นสิ่งนี้ดูเหมือนจะใช้งานได้กับ IntelliJ 2017.1.3 ฉันใช้ตัวเลือก 2 เพราะนี่คือสิ่งที่เราต้องการด้วยสปริงบูต devtools
Nico de Wet

1
ทำงานได้ดี แต่ใช้เวลาโหลด 4-5 วินาทีใน JRebel มีวิธีไหนบ้าง?
user3184974

1
ฉันไม่คิดว่ารายการ 1 & 2 ข้างต้นเป็น "ตัวเลือก" แต่เป็นขั้นตอน คุณต้องทำทั้งสองอย่าง
โทมัสคาร์ไลเซิล

67

คำเตือน

ปลั๊กอินโหมด Eclipseล้าสมัยและเข้ากันไม่ได้กับการสร้าง IDEA 12+ ล่าสุด หากคุณติดตั้งมัน IDE จะทำการเปลี่ยนแปลงทุกไฟล์และจะตอบสนองช้ามาก


IntelliJ IDEA ไม่ได้ใช้การสร้างอัตโนมัติมันตรวจจับข้อผิดพลาดได้ทันทีไม่ผ่านคอมไพเลอร์ คล้ายกับโหมด Eclipse จะมีอยู่ในIDEA 12 :

จัดทำโครงการโดยอัตโนมัติ

ใช้Build| Makeมันเรียกใช้กระบวนการสร้างที่เพิ่มขึ้นซึ่งจะรวบรวมเฉพาะไฟล์ที่เปลี่ยนแปลงและขึ้นต่อกัน (มันเร็วมาก)

นอกจากนี้ยังมีรายการคำถามที่พบบ่อยที่อาจช่วยได้

อัปเดตเกี่ยวกับคุณสมบัติการทำอัตโนมัติ : เมื่อเรียกใช้ / การกำหนดค่าการดีบักจะMake project automaticallyไม่มีผล คลาสบนดิสก์จะเปลี่ยนเฉพาะในBuild| Make. มันเป็นการตัดสินใจที่สำคัญในการออกแบบระดับความเห็นของเราบนดิสก์ควรอยู่ภายใต้การควบคุมของผู้ใช้เสมอ การสร้างอัตโนมัติไม่ใช่คุณสมบัติเลียนแบบของ Eclipse มันทำงานแตกต่างกันและมีจุดประสงค์หลักคือเพื่อประหยัดเวลาที่จะให้ชั้นเรียนพร้อมเมื่อพวกเขาต้องการจริงๆ (ก่อนเรียกใช้แอปหรือการทดสอบ) การทำแบบอัตโนมัติไม่ได้แทนที่การรวบรวมอย่างชัดแจ้งที่คุณยังต้องเรียกเช่นในกรณีที่อธิบายไว้ในคำถามนี้ หากคุณกำลังมองหาพฤติกรรมที่แตกต่างกันปลั๊กอิน EclipseMode ที่ลิงก์ในคำถามที่พบบ่อยด้านบนจะเป็นตัวเลือกที่ดีกว่า


ใช่ฉันเคยเห็นมาก่อน แต่ปฏิเสธว่ามันช้าเกินไปด้วยป๊อปอัปและทั้งหมด คิดว่ามันเป็นอย่างอื่น ฉันอาจลอง althoguh CTRL + 9 เป็นที่น่ารำคาญ แต่ฉันเดาว่าฉันสามารถทำการแมปใหม่กับ CTRL + S เพื่อบันทึกได้โดยอัตโนมัติ
mmm

ขอบคุณสำหรับการอัพเดท. ฉันติดตั้งปลั๊กอิน Eclipse Mode แล้ว ไม่มีกล่องโต้ตอบนั้น ... อ๊อก .. Intellij 12 ... ก็ดีที่คุณพัฒนาอยู่ Intellij 12 ดีขึ้นหรือไม่
mmm

3
ฉันลองใช้ 12 มาสองสามวันแล้ว การใช้งานบิลด์ภายนอก -> สร้างโดยอัตโนมัติจะไม่ดำเนินการใด ๆ ไม่มีอะไรเกิดขึ้น เมื่อฉันใช้ปลั๊กอินโหมด eclipse (เปิด / ปิดการใช้งานจากการตั้งค่า) ที่ทำงานได้ดี แต่เมื่อฉันปิดการใช้งานปลั๊กอินโหมด eclipse และเปิดใช้งาน "ใช้การสร้างภายนอก -> auto ทำ" ไม่มีอะไรเกิดขึ้นในการแก้ไขและบันทึก ... ทำไม?
mmm

2
@CrazyCoder ฉันเพิ่งกลับมาที่นี่และ jRebel นี่ช้าเกินไป มีห้องพักสำหรับการปรับปรุงมาก! ฉันไม่ใช่สิ่งที่ทำในพื้นหลัง แต่ใช้เวลา Intellij ประมาณ 3-4 วินาทีในการรวบรวมการเปลี่ยนแปลงเล็กน้อยในชั้นเรียนเดียว แม้แต่ "Compile 'StartController.java'" ก็หมายถึงชั้นหนึ่งใช้เวลาเพียง 3-4 วินาทีเท่านั้น Eclipse ทำสิ่งนี้ในเวลาน้อยกว่า 100 มิลลิวินาที ฉันจะทดสอบปลั๊กอินอีกครั้งและตัดสินใจว่าจะไปกับ ..
mmm

1
@SecretService ข้อเสนอแนะพฤติกรรมแท็บที่มีการต้อนรับที่youtrack.jetbrains.com/issues/IDEA มีปัญหาเปิดหลายประการเกี่ยวกับแท็บที่ถูกตรึงและป้องกันไม่ให้ปิด
CrazyCoder

38

คุณสามารถctrl+sทำแผนที่และบันทึกและคอมไพล์ได้ในขั้นตอนเดียว Compileไปที่การตั้งค่ารูปแบบแป้นและค้นหา


3
ขอบคุณฉันชอบสิ่งนี้ที่สุด! คอมไพล์อัตโนมัติใน intellij และอันนี้เช่นกัน แต่อย่างน้อยฉันก็เห็นว่ามันเสร็จสิ้นแล้วช้าเกินไป
mmm

ไม่ได้ผลสำหรับฉันการกำหนด CTRL + S เพื่อคอมไพล์ไม่รีสตาร์ทเซิร์ฟเวอร์ของฉันเริ่มต้นด้วยปุ่มดีบั๊ก
Dimitri Kopriwa

มันใช้งานได้สำหรับฉัน Intellij 2018.2 ควรค้นหาโครงการ Build
Neo Pham

18

ที่จริงแล้วไม่ต่างกันเนื่องจากต้องใช้ 1 คลิก:

  • Eclipse : บันทึกด้วยตนเองรวบรวมอัตโนมัติ
  • IntelliJ : บันทึกอัตโนมัติรวบรวมด้วยตนเอง

ทางออกที่ง่ายที่สุดคือทำความคุ้นเคยกับมัน เพราะเมื่อคุณใช้เวลาส่วนใหญ่ในเวลากลางวันของคุณใน IDE คุณควรมีนิสัยที่รวดเร็วในหนึ่งเดียวมากกว่านิสัยที่ช้าในหลาย ๆ คน


2
มีวิธีในการปรับปรุงประสบการณ์ IntelliJ: บันทึกและรวบรวมในขณะที่คุณเปลี่ยนไปใช้เบราว์เซอร์
ruX

Eclipse มีความสามารถในการเพิ่มการดำเนินการบันทึกคุณสามารถทำสิ่งต่าง ๆ เช่นจัดระเบียบการนำเข้าและรหัสรูปแบบในการบันทึก การทำสิ่งเหล่านี้ด้วยตนเองเพิ่มการกดแป้นจำนวนมากและทำให้กระบวนการเกิดข้อผิดพลาดได้ง่ายขึ้น ตัวอย่างเช่นคุณไม่สามารถมีรหัสที่ไม่ฟอร์แมตหากคุณฟอร์แมตเมื่อบันทึกใน Eclipse มันง่ายมากที่จะลืมการจัดรูปแบบใน IntelliJ
สูงสุด

1
@ Max, IntelliJ ดำเนินการกระทำเหล่านั้นในระหว่างการกระทำ (ซึ่งตามรสนิยมส่วนตัวของฉันคือช่วงเวลาที่ดีที่สุด) ในบางกรณีมันยังเน้นถึงปัญหาสไตล์การเขียนโค้ดโดยตรงในตัวแก้ไข (เช่นความสอดคล้อง PEP8 สำหรับ python)
andruso

2
ทำความคุ้นเคยกับสิ่งที่ IDE หนึ่งทำเพื่อฉันและที่อื่นไม่ทำให้ชีวิตของฉันยากขึ้นไม่ใช่จุดขายที่ดี
Jonathan

1
@ โจนาธานปรับปรุงการใช้งานบ่อยครั้งมากต้องทิ้งเก่าบ่อยครั้งที่ไม่จำเป็นนิสัยสำหรับผู้ใช้
andruso

17

ฉันลงเอยด้วยการบันทึกMacroเพื่อบันทึกและรวบรวมในขั้นตอนเดียวและ keymap Ctrl+sไปยังมัน


5
@SecretService อาจไม่ทำงานสำหรับทุกคนเนื่องจากไม่ได้กำหนดลำดับของการดำเนินการเมื่อมีการจับคู่หลายการกระทำกับทางลัดเดียวกัน
Celos

13

ฉันจัดการเพื่อแก้ปัญหานี้โดยใช้มาโคร

ฉันเริ่มบันทึกแมโคร:

  • คลิกแก้ไข - แมโคร - เริ่มการบันทึกแมโคร
  • คลิกไฟล์ - บันทึกทั้งหมด
  • คลิกสร้าง - สร้างโครงการ
  • คลิกแก้ไข - แมโคร - หยุดการบันทึกแมโคร

ตั้งชื่อสิ่งที่มีประโยชน์เช่น "SaveAndMake"

ตอนนี้เพียงแค่ลบบันทึกการผูกกุญแจทั้งหมดและเพิ่มการผูกพวงกุญแจเดียวกันกับมาโครของคุณ!

ดังนั้นตอนนี้ทุกครั้งที่ฉันบันทึกมันจะบันทึกและทำให้คอมไพล์สกปรกและตอนนี้ jRebel ตรวจพบการเปลี่ยนแปลงทั้งหมดอย่างถูกต้อง


ขอแนะนำให้ให้การเชื่อมโยงปุ่มกดแบบแมโครที่แตกต่างกันแทนที่จะแทนที่การบันทึกที่มีอยู่ทั้งหมด
arcseldon

ขอบคุณ เนื่องจาก "Build" (ตามคำแนะนำโดยคำตอบอื่น ๆ ) ไม่เพียงพอสำหรับฉันฉันใช้โซลูชันนี้เพื่อบันทึก + สร้างใหม่ทุกครั้ง ให้ฉันกลับรู้สึกคราสถึงแม้ว่ามันจะสิ้นเปลืองทรัพยากรจำนวนมาก ...
บอริส

5

โปรดทำตามขั้นตอนเหล่านี้อย่างระมัดระวังเพื่อเปิดใช้งาน

1) สร้างโครงการ Spring Boot ด้วย SB V1.3 และเพิ่ม "Devtools" (1 *) เพื่อการอ้างอิง

2) เรียกใช้วิธีใช้ -> ค้นหาการกระทำ ... และพิมพ์ "รีจิสทรี" ในการค้นหาข้อความโต้ตอบสำหรับ "automake" และเปิดใช้งานรายการ " compiler.automake.allow.when.app.running ", กล่องโต้ตอบปิด

3) เปิดใช้งานการคอมไพล์พื้นหลังใน Settings-> Build, Execution, Deployment-> คอมไพเลอร์ "สร้างโครงการโดยอัตโนมัติ"

4) เปิด Spring Boot run config คุณควรได้รับข้อความเตือนหากทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง

5) เรียกใช้แอปเปลี่ยนคลาสของคุณได้ทันที

กรุณารายงานประสบการณ์และปัญหาของคุณเป็นความคิดเห็นต่อปัญหานี้

คลิกที่นี่สำหรับข้อมูลเพิ่มเติม


มันถูกทำเครื่องหมายเป็น "อยู่ระหว่างดำเนินการ" และใช้งานไม่ได้สำหรับฉัน
JGarrido

2

สิ่งเดียวที่ทำงานให้ฉันในโครงการ maven ของฉันที่ได้รับผลกระทบจากสิ่งนี้คือการเพิ่มเป้าหมาย "รวบรวมการทดสอบ" เพื่อกำหนดค่าการรันของการทดสอบหน่วยของฉัน วิธีแก้ปัญหาอย่างไม่น่าเชื่ออย่างเหลือเชื่อ แต่ใช้งานได้

ป้อนคำอธิบายรูปภาพที่นี่


อย่างน้อยก็ใช้งานได้: D แต่ใช่ดีกว่าที่จะหาสาเหตุของปัญหานี้
Anindis

2

Intellij ล้มเหลวอย่างเงียบ ๆ เมื่อพบปัญหาการคอมไพล์ในโมดูลอื่นแล้วการสร้างอัตโนมัติจะไม่ดำเนินการ ดังนั้นตรวจสอบProblemsหน้าต่างของคุณ


1

ฉันมีปัญหาเดียวกัน ฉันใช้ "โหมดประหยัดพลังงาน" ซึ่งป้องกันไม่ให้รวบรวมเพิ่มขึ้นและแสดงข้อผิดพลาดในการรวบรวม


Idont รู้ว่าทำไมคำตอบนี้ gots downvote มันยังตอบคำถามสำหรับฉันเหมือนกัน - "โหมดประหยัดพลังงาน" แม้ว่ามันจะเขียนไว้ในการตั้งค่า แต่การรวบรวมอัตโนมัติที่เปิดใช้งานนี้ไม่ทำงาน
Nerius Jok

1

ใช้ปลั๊กอินจัดรูปแบบและคอมไพล์ (แรงบันดาลใจจากปลั๊กอินบันทึกการกระทำของ Alexandre DuBreuil):

https://plugins.jetbrains.com/plugin/8231?pr=idea_ce

ในขณะนี้ฉันเพียงเสนอไฟล์ jar แต่นี่เป็นส่วนที่สำคัญที่สุดของรหัส:

private final static Set<Document> documentsToProcess = new HashSet<Document>();
private static VirtualFile[] fileToCompile = VirtualFile.EMPTY_ARRAY;

// The plugin extends FileDocumentManagerAdapter.
// beforeDocumentSaving calls reformatAndCompile
private static void reformatAndCompile(
        @NotNull final Project project,
        @NotNull final Document document,
        @NotNull final PsiFile psiFile) {
    documentsToProcess.add(document);
    if (storage.isEnabled(Action.compileFile) && isDocumentActive(project, document)) {
        fileToCompile = isFileCompilable(project, psiFile.getVirtualFile());
    }
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override
        public void run() {
            if (documentsToProcess.contains(document)) {
                documentsToProcess.remove(document);
                if (storage.isEnabled(Action.optimizeImports)
                        || storage.isEnabled(Action.reformatCode)) {
                    CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() {
                        @Override
                        public void run() {
                            if (storage.isEnabled(Action.optimizeImports)) {
                                new OptimizeImportsProcessor(project, psiFile)
                                    .run();
                            }
                            if (storage.isEnabled(Action.reformatCode)) {
                                new ReformatCodeProcessor(
                                        project,
                                        psiFile,
                                        null,
                                        ChangeListManager
                                            .getInstance(project)
                                            .getChange(psiFile.getVirtualFile()) != null)
                                                .run();
                            }
                            ApplicationManager.getApplication().runWriteAction(new Runnable() {
                                @Override
                                public void run() {
                                    CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(psiFile);
                                }
                            });
                        }
                    });
                }
            }

            if (fileToCompile.length > 0) {
                if (documentsToProcess.isEmpty()) {
                    compileFile(project, fileToCompile);
                    fileToCompile = VirtualFile.EMPTY_ARRAY;
                }
            } else if (storage.isEnabled(Action.makeProject)) {
                if (documentsToProcess.isEmpty()) {
                    makeProject(project);
                }
            } else {
                saveFile(project, document, psiFile.getVirtualFile());
            }
        }
    }, project.getDisposed());
}

private static void makeProject(@NotNull final Project project) {
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override
        public void run() {
            CompilerManager.getInstance(project).make(null);
        }
    }, project.getDisposed());
}

private static void compileFile(
        @NotNull final Project project,
        @NotNull final VirtualFile[] files) {
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override
        public void run() {
            CompilerManager.getInstance(project).compile(files, null);
        }
    }, project.getDisposed());
}

private static void saveFile(
        @NotNull final Project project,
        @NotNull final Document document,
        @NotNull final VirtualFile file) {
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override
        public void run() {
            final FileDocumentManager fileDocumentManager = FileDocumentManager.getInstance();
            if (fileDocumentManager.isFileModified(file)) {
                fileDocumentManager.saveDocument(document);
            }
        }
    }, project.getDisposed());
}

2
ทำไมทุกคนจะดาวน์โหลดรหัสสุ่มและเรียกใช้
Drew

@Drew: เพิ่งอัปโหลดไปยัง Jetbrains เพื่อตรวจสอบ แต่ถ้าคุณเป็นคนหวาดระแวงฉันคิดว่าคุณสามารถรอสักสองสามวันก่อนที่มันจะออกมาจากที่นั่น ...
sbmpost

ใช่, ฉันแค่ชี้ให้เห็นว่าทำไมบางคน (ไม่ใช่ที่ฉันทำ) downvote, ตั้งค่าสถานะเป็นไม่ใช่คำตอบและลบสิ่งนี้ออก
Drew

หากเป็นรหัสที่คุณสามารถโพสต์ได้เป็นข้อความที่ยอดเยี่ยม คุณสามารถ? นี่คือเว็บไซต์รหัส
Drew

1
@drew: เพิ่มบันทึกเกี่ยวกับ jar และเพิ่มบริบทเพิ่มเติมเล็กน้อยให้กับโค้ด อาจดูเหมือนระดับสูง แต่ถ้าคุณขยายจาก FileDocumentManagerAdapter และเพิ่มรหัสคุณจะ (เกือบ) มีการคอมไพล์คลาส ReformatAndCompile
sbmpost

1

แก้ไข Run / Debug Configuration เพื่อให้ตัวเลือก Build ถูกเลือกก่อนที่จะเปิดตัว

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากเลือกตัวเลือก Build แล้ว

ป้อนคำอธิบายรูปภาพที่นี่

วิธีการแก้ปัญหาข้างต้นทำงานสำหรับฉันในขณะที่ทำงานกับชุดทดสอบ JBehave ของฉัน


นี่เป็นคำถามที่ดี แต่คำถามก็คือการคอมไพล์โดยอัตโนมัติในการบันทึกโดยไม่ต้องคอมไพล์ explicity อีกครั้งโดยใช้คำสั่งที่กำหนดเองก่อนที่จะทำอะไรเช่นการทดสอบ ฯลฯ
kisna

1

มันไม่ทำงานสำหรับฉันเนื่องจากมีโมดูลที่ไม่จำเป็นในโครงสร้างโครงการของฉัน การทดสอบดำเนินการโดยใช้โมดูลอื่นฉันคิดว่า

ฉันไม่ทราบว่ามันจะเป็นอย่างไร แต่การลบมันแก้ไขปัญหาได้

ตรวจสอบให้แน่ใจว่าการตั้งค่า Run / Debug ของคุณใช้โมดูลที่คุณกำลังสร้างด้วยการบันทึกอัตโนมัติ

เช่นดูโมดูลใน

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถเปลี่ยนโมดูลในโครงสร้างโครงการ - โมดูล

ป้อนคำอธิบายรูปภาพที่นี่


1

ฉันมีปัญหาเดียวกัน ฉันคิดว่ามันเหมาะสมที่จะตรวจสอบว่าคลาสของคุณสามารถรวบรวมได้หรือไม่ คลิกคอมไพล์ใหม่ (Ctrl + Shift + F9 โดยค่าเริ่มต้น) ถ้ามันไม่ทำงานคุณต้องตรวจสอบสาเหตุที่มันไม่ได้รวบรวม

ในกรณีของฉันรหัสไม่ได้รับการเติมข้อความอัตโนมัติเนื่องจากมีข้อผิดพลาดที่ซ่อนอยู่กับการรวบรวม สาเหตุหลักคือโครงสร้างโครงการไม่ถูกต้อง -> การกำหนดค่าโมดูลดังนั้น Intellij Idea จึงไม่สามารถสร้างได้ตามการกำหนดค่านี้


1

ฉันมีปัญหาเดียวกันและยังเป็นไอคอนของไฟล์มีปัญหาใน IntelliJ ดังนั้นฉันออก.ideaโครงการโฟลเดอร์และใหม่นำเข้าแก้ไขปัญหาของฉัน


0

ฉันได้รับข้อผิดพลาด: ขวดบางตัวไม่อยู่ใน classpath ดังนั้นฉันจึงลบ jar ที่เสียหายและทำตามขั้นตอนด้านล่าง

1.Project >  Setting>Build,Execution,Deployment>Compiler>check build project automatically
2.CTRL+SHIFT+A find/search **registry** --Check for below param
compiler.automake.allow.when.app.running
compiler.automake.trigger.delay=500---According to ur requirement
3.Add devtool in pom.xml
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
4.Build ,If found any probelm while building ,saying some jar in not in class path.Just delete the corrupted jar
and re-build the project angain after sync with maven lib

-1

ไม่ได้คะแนนมากพอที่จะแสดงความคิดเห็นในคำตอบที่มีอยู่ แต่คล้ายกับบางคนข้างต้นผมแผลขึ้นเพียงการเพิ่มแมโครและรูปแบบแป้นเพื่อจัดระเบียบนำเข้า / รูปแบบ / SaveAll / FastReload (F9) / ประสาน

การซิงโครไนซ์จะถูกเพิ่มเนื่องจากดูเหมือนเป็นวิธีเดียวที่ฉันสามารถเห็นการอัปเดตในทรัพยากรที่แก้ไขโดยเครื่องมือสร้าง / นักดูภายนอก (เช่น webpack)

กระบวนการช้ากว่า eclipse - และสำหรับการรีเฟรชไฟล์ภายนอกมักจะต้องรันคำสั่งหลายครั้ง - แต่สมมติว่าฉันสามารถอยู่กับมันได้

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