วิธีเพิ่มไดเรกทอรีไปยัง classpath ในแอปพลิเคชันที่เรียกใช้โปรไฟล์ใน IntelliJ IDEA ได้อย่างไร


206

ฉันกำลังพยายามเพิ่มไดเรกทอรีไปยังคลาสพา ธ ของโปรไฟล์เรียกใช้แอปพลิเคชัน

ถ้าฉันแทนที่โดยใช้ -cp x: target / classes ในการตั้งค่า VM ฉันได้รับข้อผิดพลาดต่อไปนี้:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

แนวคิดใด ๆ เกี่ยวกับวิธีเพิ่มไดเรกทอรีไปยัง classpath สำหรับโครงการของฉัน


1
ยังไม่ชัดเจนสำหรับฉันซึ่งคุณพยายามที่จะเพิ่ม จากบรรทัดคำสั่ง IJ? หรือในคุณสมบัติของโครงการ?
Heiko Rupp

ที่เกี่ยวข้อง: youtrack.jetbrains.net/issue/IDEA-160167
AlikElzin-kilaka

คำตอบ:


270

ใน Intellij 13 ดูเหมือนว่าจะแตกต่างกันเล็กน้อยอีกครั้ง นี่คือคำแนะนำสำหรับ Intellij 13:

  1. คลิกที่มุมมองโครงการหรือยกเลิกการซ่อนโดยคลิกที่ปุ่ม "1: โครงการ" ที่ชายแดนด้านซ้ายของหน้าต่างหรือกด Alt + 1
  2. ค้นหาโครงการหรือโมดูลย่อยของคุณแล้วคลิกเพื่อไฮไลต์แล้วกด F4 หรือคลิกขวาแล้วเลือก "เปิดการตั้งค่าโมดูล" (บน IntelliJ 14 กลายเป็น F12)
  3. คลิกที่แท็บการพึ่งพา
  4. คลิกปุ่ม "+" ทางด้านขวาและเลือก "Jars หรือไดเรกทอรี่ ... "
  5. ค้นหาเส้นทางของคุณแล้วคลิกตกลง
  6. ในช่องโต้ตอบด้วย "เลือกหมวดหมู่ของไฟล์ที่เลือก" เลือกClasses(แม้ว่าจะเป็นคุณสมบัติ) กดตกลงและตกลงอีกครั้ง
  7. ตอนนี้คุณสามารถเรียกใช้แอปพลิเคชันของคุณและจะมีเส้นทางที่เลือกในเส้นทางคลาส

2
ดังนั้นคุณจะสร้างการเรียกใช้การกำหนดค่าด้วยสองไดเรกทอรีที่แตกต่างกันอย่างไรซึ่งจะต้องมีอยู่ในหนึ่งโดยเฉพาะ ใน eclipse คุณสามารถเพิ่ม / ลบอะไรก็ได้ในการกำหนดค่าการเปิดตัว IntelliJ ไม่รองรับสิ่งนี้หรือไม่
Καrτhικ

9
ค่อนข้างชัดเจนว่าคุณสามารถเปลี่ยน classpath ของการเรียกใช้การ เปลี่ยนการกำหนดค่า classpath โมดูล แต่คำถามที่แน่นอนคือ "วิธีเพิ่มไดเรกทอรีไปยัง classpath ในแอปพลิเคชันเรียกใช้โปรไฟล์ " ดังนั้นความจริงจึงได้รับจาก uaaquarius
Pavel Vyazankin

ขอบคุณ ! วิธีนี้ช่วยแก้ไขปัญหาของฉันหลังจากอายุการค้นหาทั่ว!
JonasCz - Reinstate Monica

1
ขั้นตอนที่ 6 ไม่ได้เกิดขึ้นสำหรับฉัน ฉันใช้งาน Intellij 14. ฉันมีโฟลเดอร์ชื่อ lib ซึ่งเป็นที่ตั้งของ. jar ของฉัน การเลือกโฟลเดอร์หรือ jar จะแยกเส้นทางเข้าสู่ Intellij ยังไม่สามารถใช้งานได้
Takeru

@Takeru คุณเข้าใจสิ่งนี้หรือไม่?
rosshamish

91

ดูเหมือนว่า IntelliJ 11 ได้เปลี่ยนวิธีการแล้วและคำตอบที่เลือกไม่เหมาะกับฉันอีกต่อไป ในกรณีที่คนอื่นมาถึงที่นี่ผ่านเครื่องมือค้นหานี่คือวิธีที่ฉันแก้ไขใน IntelliJ 11:

  1. ไปที่โครงสร้างโครงการคลิกที่โมดูลและคลิกที่โมดูลของคุณ
  2. เลือกแท็บ "การพึ่งพา"
  3. คลิกปุ่ม "+" ที่ด้านขวาและเลือก "Jars หรือไดเร็กตอรี่ ... "
  4. เพิ่มไดเรกทอรี (IES) ที่คุณต้องการ (หมายเหตุคุณสามารถเลือกได้หลายแบบ) และคลิกตกลง
  5. ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือก "คลาส" และไม่ใช่ "jar directory"
  6. ตรวจสอบให้แน่ใจว่าคุณกำลังใช้โมดูลนั้นในเป้าหมายการทำงานของคุณ

โปรดทราบว่าขั้นตอนที่ 5 น่าจะเป็นความแตกต่างที่สำคัญ หากคุณเลือก "jar directory" จะมีลักษณะเหมือนกันใน IDE แต่จะไม่รวมพา ธ ที่ runtime ดูเหมือนจะไม่มีทางที่จะตัดสินได้ว่าคุณได้เลือก "คลาส" หรือ "ไดเร็กตอรี่ jar" หลังจากข้อเท็จจริงหรือไม่


4
ขอบคุณมากที่โพสต์ข้อความนี้ คุณเพิ่งช่วยฉันหนึ่งชั่วโมงหรือประมาณนั้น
John Jiang

ฉันมีปัญหาเช่นเดียวกับเมื่อก่อนกับ IJ11 และมีความสุขที่ได้พบคำตอบที่รอฉันในครั้งนี้
พะยอม

สมบูรณ์ กระบวนการเดียวกันสำหรับ IJ12 วิ่งข้ามโพสต์นี้เมื่อพยายามแก้ไข 'java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver' ปัญหานี้แก้ไขปัญหาการเชื่อมต่อ ขอบคุณ
jkmurphy1

6
ฉันไม่ได้รับขั้นตอนที่ 5 :( กล่องโต้ตอบไม่ปรากฏขึ้น
Charles Wood

1
@CharlesWood: เมื่อฉันต้องการเลือกสองโฟลเดอร์โดยหนึ่งในนั้นมีโฟลเดอร์ย่อย ฉันต้องขยายโฟลเดอร์ที่มีโฟลเดอร์ย่อยผ่านสัญลักษณ์ลูกศรเล็ก ๆ ถัดจากชื่อโฟลเดอร์เพื่อให้ไดอะล็อกปรากฏขึ้น ไม่เช่นนั้นกล่องโต้ตอบจะถูกข้าม
Timo Reimann

35

คุณสามารถลองใช้-Xbootclasspath / a: pathตัวเลือกของตัวเรียกใช้งานจาวา ตามคำอธิบายระบุว่า "เส้นทางที่คั่นด้วยโคลอนของคำสั่ง, ไฟล์เก็บถาวร JAR และไฟล์เก็บถาวร ZIP เพื่อผนวกเข้ากับพา ธ คลาสบูตสแตรปเริ่มต้น"


2
เอกสารบางอย่างเกี่ยวกับวิธีการทำงานของ-Xbootclasspath
Lambart

3
นี่เป็นคำตอบที่ดีเพราะไม่ต้องการให้คุณเปลี่ยนการกำหนดค่าโครงการ อันที่จริงฉันคิดว่ามันตอบคำถามได้ดีที่สุด
Chewy

1
น่าเสียดายที่นี่ไม่ได้ผลสำหรับฉันเนื่องจากผลลัพธ์ในคลาสทั้งหมดที่โหลดจาก classpath นั้นจะโหลดโดยตัวโหลดคลาส bootstrap ซึ่งแบ่งรหัสที่ถือว่า Xyz.class.getClassLoader () เป็นโมฆะ
2560

@uaaquarius เหตุใดจึงไม่มีวิธีแก้ไขสตริงบรรทัดคำสั่งโดยตรง มันน่าหงุดหงิด
Pacerier

@uaaquarius ทำไมถ้าฉันเพิ่มการmysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarพึ่งพาโดยใช้วิธีอื่นที่stackoverflow.com/a/16742141/632951 มันใช้งานได้ แต่การใช้-Xbootclasspath/aมันไม่ได้
Pacerier

19

ฉันใช้แนวคิด 8 ในแท็บการพึ่งพาโมดูลของคุณ (ในกล่องโต้ตอบโครงสร้างโครงการ) เพิ่ม "ห้องสมุดโมดูล" ที่นั่นคุณสามารถเลือก Jar Directory เพื่อเพิ่ม จากนั้นตรวจสอบให้แน่ใจว่าโปรไฟล์การทำงานนั้นใช้ Classpath และ JDK ของโมดูลที่ถูกต้องเมื่อมันทำงาน (ซึ่งอยู่ในกล่องโต้ตอบเรียกใช้การกำหนดค่า



2

สมมติว่าคุณต้องการเพียงx: target / classesใน classpath ของคุณ จากนั้นคุณเพียงแค่เพิ่มโฟลเดอร์นี้ใน classpath ของคุณและ% IDEA% \ lib \ idea_rt.jar ตอนนี้มันจะทำงาน แค่นั้นแหละ.


4
คำถามคือคุณจะเพิ่มโฟลเดอร์นี้ใน classpath ของคุณใน IDEA ได้อย่างไร
Pacerier

0

คุณไม่จำเป็นต้องระบุโฟลเดอร์คลาส Intellij ควรสามารถโหลดได้ คุณจะได้รับข้อผิดพลาดนี้ถ้า "Project Compiler output" ว่างเปล่า

เพียงตรวจสอบให้แน่ใจว่าได้ตั้งค่าต่ำกว่า: การตั้งค่าโครงการ -> โครงการ -> เอาท์พุทคอมไพเลอร์โครงการ ไปยังโฟลเดอร์projectDir / out

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