วิธีที่ถูกต้องในการเพิ่มไหภายนอก (lib / *. jar) เข้ากับโครงการ IntelliJ IDEA


734

เมื่อสร้างโครงการ Java ใหม่ใน IntelliJ IDEA ไดเร็กทอรีและไฟล์ต่อไปนี้จะถูกสร้างขึ้น:

./projectname.iml
./projectname.ipr
./projectname.iws
./src/

ฉันต้องการกำหนดค่า IntelliJ IDEA เพื่อรวม JARs อ้างอิงของฉันไว้ใน./lib/*.jarโครงการ วิธีที่ถูกต้องในการบรรลุสิ่งนี้ใน IntelliJ IDEA คืออะไร?


ฉันกำลังเผชิญกับปัญหาในขณะที่เรียกใช้โปรแกรมใน terminal ใน IntelliJ ฉันใช้คำสั่งการนำเข้าเพื่อใช้คลาสที่ฉันต้องการในโปรแกรม ในขณะที่ฉันรันใน IDE มันทำงานได้ดี แต่เมื่อฉันพยายามรวบรวมจากบรรทัดคำสั่ง% javac MyProgram.java ข้อผิดพลาดแจ้งว่า: ไม่พบสัญลักษณ์
don_Gunner94

คำตอบ:


1305

ขั้นตอนสำหรับการเพิ่มไหภายนอกใน IntelliJ IDEA:

  1. คลิกFileจากแถบเครื่องมือ
  2. โครงสร้างโครงการ ( CTRL+ SHIFT+ ALT+ Sบน Windows / Linux, + ;บน Mac OS X)
  3. เลือกโมดูลที่แผงด้านซ้าย
  4. แท็บการอ้างอิง
  5. '+' → JARs หรือไดเรกทอรี

99
นอกจากนี้ให้พิจารณาเพิ่มโฟลเดอร์ lib และใช้ "แนบไดเรกทอรี Jar" ซึ่งจะเพิ่มขวดทั้งหมดในโฟลเดอร์ lib สำหรับโครงการขนาดใหญ่สิ่งนี้ทำให้คุณไม่ต้องเลือกแต่ละขวด
joeslice

16
สำหรับการอ้างอิงในอนาคต: ปุ่ม "เพิ่ม" อยู่นอกขอบด้านขวาของหน้าต่างและฉันใช้เวลามากเกินไปในการค้นหาก่อนที่จะค้นหาโพสต์นี้และคิดว่าจะปรับขนาดหน้าต่าง (นี่เป็น OSX 10.6.5 ... )
Daniel Dickison

7
@ joeslice ใช้งานได้เฉพาะถ้า JAR อยู่ในไดเรกทอรีรากใช่ไหม ดูเหมือนจะไม่สามารถใช้งานได้กับ JAR ในไดเรกทอรีย่อยภายใน 'lib'
opyate

6
ใน IJIdea 13 มี "+"> แทน "เพิ่ม"
วาล

4
ฉันใช้ IDEA 14.0.2 แทนที่จะเพิ่มมีสัญลักษณ์ + หลังจากคลิก + มี 3 ตัวเลือก: 1. JARs หรือไดเรกทอรี 2. ห้องสมุด ... 3. การพึ่งพาโมดูล ...
Ripon Al Wasim

239

IntelliJ IDEA 15 & 2016

  1. ไฟล์ > โครงสร้างโครงการ ...

    ไฟล์> โครงสร้างโครงการ

    หรือกดCtrl+ Alt+ Shift+S

  2. การตั้งค่าโปรเจ็กต์ > โมดูล > การอ้างอิง > เครื่องหมาย " + "> JAR หรือไดเรกทอรี ...

    โมดูล> การพึ่งพา> JAR หรือไดเร็กทอรี

  3. เลือกไฟล์ jar และคลิกที่ OK จากนั้นคลิกที่ปุ่ม OK อื่นเพื่อยืนยัน

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

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

  4. คุณสามารถดูไฟล์ jar ในโฟลเดอร์ "External Libraries"

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


ฉันจริงสร้างโมดูลใหม่ในบานหน้าต่าง "Modules" (ชื่อเช่น "JarsForLogging") จากนั้นเพิ่ม jars ทั้งหมดที่ฉันต้องการ (อยู่ในไดเรกทอรีบางที่อยู่ไกลจากแผนผังโครงการ) ลงในโมดูลใหม่นี้และทำเครื่องหมาย jars เป็น " ส่งออก". ในที่สุดฉันเพิ่มโมดูลที่สร้างขึ้นใหม่เพื่อการอ้างอิงของโมดูลเดิม เป็นแบบนั้นอีกเล็กน้อย
David Tonhofer

นอกจากนี้: ตรวจสอบให้แน่ใจว่าสิทธิ์ระบบไฟล์ถูกตั้งค่าอย่างถูกต้องสำหรับ.jarไฟล์ ใช้chmodเพื่อปรับเปลี่ยนพวกเขาบน Linux หรือ MacOS
JJD

4
ยังคงใช้งานได้ในปี 2018 (รุ่นปีและรุ่น IntelliJ) ขอบคุณ. วิธีนี้ฉันสามารถโหลดและใช้ห้องสมุด Lisp Common Arisp Bear จากภายใน IntelliJ สุดยอด!
Jason Robinson

อ๋อ ทำงานได้ดีกับ IntelliJ ของฉันเช่นกัน ขอบคุณ!
Bms bharadwaj

1
@ don_Gunner94 ผ่านทางบรรทัดคำสั่งคุณควรระบุ jar ดังนี้:javac -cp ".:/my/path/file.jar;" MyProgram.java
ROMANIA_engineer

118

เพียงคัดลอกวาง. jar ภายใต้โฟลเดอร์ "libs" (หรือทั้งโฟลเดอร์ "libs") คลิกขวาและเลือกตัวเลือก 'เพิ่มเป็นห้องสมุด' จากรายการ มันจะทำส่วนที่เหลือ ...

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


ง่ายและวิธีที่เราคุ้นเคยตั้งแต่ทำ Eclipse
Sufian

3
เรียบง่าย!!
Anaximandro Andrade

3
มันน่ารำคาญมากที่มันยังถามหา "ชื่อ" แล้วคุณจะทิ้งขยะไว้ในนั้นได้ไหม?
dividebyzero

สิ่งนี้ช่วยฉันด้วย!
Preeti Joshi

ฉันกำลังเผชิญกับปัญหาในขณะที่เรียกใช้โปรแกรมใน terminal ใน IntelliJ ฉันใช้คำสั่งการนำเข้าเพื่อใช้คลาสที่ฉันต้องการในโปรแกรม ในขณะที่ฉันรันใน IDE มันทำงานได้ดี แต่เมื่อฉันพยายามรวบรวมจากบรรทัดคำสั่ง% javac MyProgram.java มันบอกว่า error: ไม่สามารถหาสัญลักษณ์ได้ -
don_Gunner94

20

คุณเพิ่มพวกเขาเป็นห้องสมุดในโมดูลของคุณ

ฉันมักจะมี/libไดเรกทอรีในแหล่งที่มาของฉัน ฉันใส่ไหทั้งหมดที่ฉันต้องการมีเพิ่ม / lib เป็นห้องสมุดและทำให้มันเป็นส่วนหนึ่งของการพึ่งพาโมดูลของฉัน

อัปเดต 2018: ฉันใช้ IntelliJ 2017/2018 ในตอนนี้

ฉันมุ่งมั่นอย่างเต็มที่ที่จะ Maven และ Nexus สำหรับการจัดการการพึ่งพา

นี่คือวิธีที่โลกได้หายไป ทุกโปรเจ็กต์โอเพนซอร์สที่ฉันรู้จักในการใช้ Maven หรือ Gradle คุณควรทำเช่นกัน


ใช่ แต่จะเกิดอะไรขึ้นถ้า Maven pom ไม่ได้เรียกว่า pom.xml ดูเหมือนว่าฉันไม่สามารถอ่าน Maven dependencies ได้
user1001630

4
การประชุมคือการเรียกมันว่า pom.xml ทำตามแบบแผนและเปลี่ยนชื่อไฟล์ของคุณ
duffymo

ฉันยังคงพบความต้องการเมื่อไหไม่มี repo maven ... แต่ฉันไม่เข้าใจวิธีการทำอย่างถูกต้อง ฉันเข้าใจวิธีเพิ่มไดเรกทอรีฉันแค่ไม่เข้าใจว่าจะนำมันเข้ายัง javadocs ด้วยเช่นกัน มันทำงานได้เมื่อฉันเพิ่ม jar เป็นไฟล์เดียว แต่ไม่ใช่ถ้าฉันเพิ่มไดเรกทอรี มันเป็นไปไม่ได้ใช่ไหม?
ycomp

นี่คือคำแนะนำเสียง การเพิ่มขวดด้วยตนเองนั้นใช้เวลานานและมีแนวโน้มที่จะเกิดข้อผิดพลาด การอ้างอิงของคุณควรกำหนดค่า "ผ่านรหัส" ในpom.xml(สำหรับ maven) หรือสิ่งที่เทียบเท่าสำหรับ gradle
vikingsteve

1
JAR ทั้งหมดมี repo หากไม่สามารถใช้ได้ใน repo สาธารณะหรือส่วนตัวคุณสามารถ mvn ติดตั้งด้วยตนเองใน. m2 ท้องถิ่นของคุณ ไม่มีเหตุผลที่จะทำอย่างอื่น
duffymo

17

หากคุณกำลังสร้างโครงการด้วย gradle คุณเพียงแค่ต้องเพิ่มหนึ่งบรรทัดในการพึ่งพาใน build.gradle:

buildscript {
    ...
}
...

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

จากนั้นเพิ่มโฟลเดอร์ลงในโครงการหรือโมดูลรูทของคุณ:

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

จากนั้นคุณวางขวดของคุณไว้ที่นั่นและคุณไปดี :-)


ฉันกำลังเผชิญกับปัญหาในขณะที่เรียกใช้โปรแกรมใน terminal ใน IntelliJ ฉันใช้คำสั่งการนำเข้าเพื่อใช้คลาสที่ฉันต้องการในโปรแกรม ในขณะที่ฉันรันใน IDE มันทำงานได้ดี แต่เมื่อฉันพยายามรวบรวมจากบรรทัดคำสั่ง% javac MyProgram.java มันบอกว่า error: ไม่สามารถหาสัญลักษณ์ได้ -
don_Gunner94

7

ฉันใช้วิธีนี้และทำงานได้ดี:

1- คัดลอกและวาง.jarไฟล์ภายใต้libsโฟลเดอร์

2- เพิ่มcompile fileTree(dir: 'libs', include: '*.jar')ลงdependenciesในbuild.gradleจากนั้นlibsจะรวมไหทั้งหมดในโฟลเดอร์

3- คลิกขวาที่libsโฟลเดอร์และเลือกตัวเลือก 'เพิ่มเป็นห้องสมุด' จากรายการ


ขอบคุณนี่เป็นสิ่งเดียวที่ใช้ได้สำหรับฉัน!
Gregordy

ฉันกำลังเผชิญกับปัญหาในขณะที่เรียกใช้โปรแกรมใน terminal ใน IntelliJ ฉันใช้คำสั่งการนำเข้าเพื่อใช้คลาสที่ฉันต้องการในโปรแกรม ในขณะที่ฉันรันใน IDE มันทำงานได้ดี แต่เมื่อฉันพยายามรวบรวมจากบรรทัดคำสั่ง% javac MyProgram.java มันบอกว่า error: ไม่สามารถหาสัญลักษณ์ได้
don_Gunner94

5

ไม่สามารถใช้ไลบรารีในโปรแกรมใด ๆ ได้โดยตรงหากไม่ได้เพิ่มไฟล์ gradle ของโครงการอย่างเหมาะสม

สิ่งนี้สามารถทำได้ใน IDEs อัจฉริยะเช่น inteli J

1) สิ่งแรกคือการประชุมเพิ่มชื่อ 'libs' ภายใต้ไฟล์ src โครงการของคุณ (สามารถทำได้อย่างง่ายดายโดยใช้ IDE เอง)

2) จากนั้นคัดลอกหรือเพิ่มไฟล์ไลบรารีของคุณ (เช่น: .jar file) ไปยังโฟลเดอร์ชื่อ 'libs'

3) ตอนนี้คุณสามารถดูไฟล์ไลบรารีในโฟลเดอร์ libs ตอนนี้คลิกขวาที่ไฟล์และเลือก 'เพิ่มเป็นห้องสมุด' และสิ่งนี้จะแก้ไขไฟล์ที่เกี่ยวข้องทั้งหมดในโปรแกรมและคลังของคุณจะสามารถใช้งานได้โดยตรง

โปรดทราบ:

เมื่อใดก็ตามที่คุณเพิ่มห้องสมุดในโครงการตรวจสอบให้แน่ใจว่าโครงการสนับสนุนห้องสมุด


3

พบความช่วยเหลือที่ดีที่นี่ อย่างไรก็ตามฉันยังคงไม่สามารถทำงานได้แม้จะโหลด JAR อย่างถูกต้อง ฉันค้นพบในภายหลังว่าฉันตั้งใจสร้างโมดูลในโครงสร้างไฟล์แทนโฟลเดอร์ปกติและโมดูลที่มากนี้ถูกเลือกล่วงหน้าในการตั้งค่าโครงการ

นี่คือรอยเท้า:

ไฟล์ -> โครงสร้างโครงการ -> โมดูล -> (เลือกโมดูลที่เหมาะสมหากคุณมีมากกว่านี้) -> การพึ่งพา -> + -> JAR หรือไลบรารี


3

ในขณะที่ฉันเห็นด้วยกับคำตอบก่อนหน้านี้เป็นสิ่งสำคัญที่จะต้องทราบวิธีการเข้าถึงรหัสของห้องสมุดภายนอกเหล่านั้น

ตัวอย่างเช่นในการเข้าถึงคลาสในไลบรารีภายนอกคุณจะต้องใช้คีย์เวิร์ดการนำเข้าตามด้วยชื่อของไลบรารีภายนอกดำเนินการต่อด้วยเครื่องหมายจุดจนกว่าจะถึงคลาสที่ต้องการ

ดูภาพด้านล่างเพื่อดูว่าฉันจะนำเข้าคลาสCodeGenerationExceptionจากไลบรารี quickfixj ได้อย่างไร

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

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