วิธีตั้งค่า java.library.path จาก Eclipse


209

ฉันจะตั้งค่าjava.library.pathสำหรับโครงการ Eclipse ทั้งหมดได้อย่างไร ฉันใช้ Java ห้องสมุดที่อาศัยเฉพาะไฟล์ OS .dll/ .so/ .jnilibและความจำเป็นที่จะหา แต่แอปพลิเคชันออกจากพร้อมข้อความแสดงข้อผิดพลาดเสมอว่าไม่พบไฟล์เหล่านั้นบนเส้นทางของไลบรารี

ฉันต้องการกำหนดค่าโครงการทั้งหมดนี้เพื่อใช้เส้นทางห้องสมุด ฉันพยายามเพิ่มเส้นทางเป็นอาร์กิวเมนต์ VM ในการกำหนดค่าการรันใน eclipse แต่ไม่ได้ผล


1
ฉันทำไปแล้วโดยเพิ่มเป็นอาร์กิวเมนต์ VM และใช้งานได้ คุณทำยังไงกันแน่?
Michael Myers

คำตอบ:


297

อย่ายุ่งกับเส้นทางของห้องสมุด! Eclipse สร้างมันขึ้นมาเอง!

ให้ไปที่การตั้งค่าไลบรารีสำหรับโครงการของคุณและสำหรับแต่ละ jar / etc ที่ต้องใช้ไลบรารีดั้งเดิมให้ขยายในแท็บไลบรารี ในมุมมองแบบต้นไม้แต่ละไลบรารีมีรายการสำหรับแหล่งที่มา / javadoc และตำแหน่งไลบรารีดั้งเดิม

โดยเฉพาะ: เลือกProjectคลิกขวา -> แท็บProperties / Java Build Path / Librariesเลือก. jar ขยายมันเลือกตำแหน่งไลบรารีดั้งเดิมคลิกแก้ไขกล่องโต้ตอบตัวเลือกโฟลเดอร์จะปรากฏขึ้น)

การล้อเล่นกับเส้นทางไลบรารีบนบรรทัดคำสั่งควรเป็นความพยายามครั้งสุดท้ายของคุณเพราะคุณอาจทำลายบางสิ่งที่ eclipse ได้ตั้งค่าไว้อย่างเหมาะสมแล้ว

ตำแหน่งไลบรารีดั้งเดิม


6
แต่มันจะทำงานอย่างไรถ้าคุณมีมากกว่าหนึ่งโฟลเดอร์ที่จะเพิ่ม?
Dan

2
นั่นเป็นคำถามที่ดี ทำไมคุณถึงมีมากกว่าหนึ่งโฟลเดอร์ของ native library สำหรับหนึ่ง jar? ฉันค่อนข้างแน่ใจว่ามีวิธีที่คุณสามารถฝังไลบรารี่ของตัวเองลงในโถเพื่อที่จะเป็นไปได้
John Gardner

1
ฉันกำลังทำงานในโครงการมรดกซึ่งฉันมีการควบคุมน้อยมาก แน่นอนฉันไม่สามารถเปลี่ยนโครงสร้างโครงการ วิธีแก้ปัญหาของฉันในขณะนี้คือการวางทุกอย่างบนเส้นทางของฉัน - แต่มันไม่ค่อยดีเท่าไหร่
Dan

1
ขึ้นอยู่กับระบบปฏิบัติการคุณสามารถสร้างหนึ่งไดเรกทอรีซึ่งเป็นลิงก์สัญลักษณ์ทั้งหมดไปยังไลบรารีอื่นได้หรือไม่ หรืออย่างน้อยก็เพื่อการพัฒนาคุณสามารถคัดลอก libs ทั้งหมดไปยังไดเรกทอรีเดียว
John Gardner

2
ฉันทำไม้นี้ไม่ได้ ฉันสามารถเพิ่มเส้นทางไลบรารีเนทิฟ แต่เมื่อฉันคลิกตกลงเพื่อย้อนกลับไปด้านบนจากนั้นข้ามไปยังคุณสมบัติของโครงการอีกครั้งมันบอกว่า "ไม่มี" ฉันกำลังใช้คราส Indigo SR2
บาคาร่า

37

หากคุณกำลังเพิ่มมันเป็นอาร์กิวเมนต์ VM ตรวจสอบให้แน่ใจว่าคุณใส่คำนำหน้าด้วย-D:

-Djava.library.path=blahblahblah...

3
ดูโพสต์นี้: stackoverflow.com/a/2309723/510583 -Djava.library.path = "$ {workspace_loc: โครงการ} \ lib; $ {env_var: เส้นทาง}"
สิงห์

23

ยกเว้นวิธีที่อธิบายไว้ในคำตอบที่อนุมัติแล้วมีวิธีอื่นถ้าคุณมี libs ดั้งเดิมในโครงการของคุณ

  • ในคุณสมบัติของโครงการ -> Java Build Path-> Tab "Source" มีรายการของโฟลเดอร์ต้นทางของคุณ
  • สำหรับแต่ละรายการจะมี "ตำแหน่งไลบรารีดั้งเดิม" ซึ่งรองรับเส้นทางภายในพื้นที่ทำงาน
  • java.library.pathซึ่งจะทำให้เกิดคราสเพิ่มไปของคุณ

2
น่ากลัว !!!! ขอบคุณมาก!!! ที่แก้ไขปัญหาของฉัน ต้องการเพิ่ม dylib ให้กับโปรเจ็กต์ของฉันและ jar การตั้งค่าตำแหน่งไลบรารีดั้งเดิมแก้ไข!
ufk

11

สำหรับการเปิดตัวแอปพลิเคชั่นที่กำหนดคุณสามารถทำได้ตามที่จิมพูด

หากคุณต้องการตั้งค่าสำหรับพื้นที่ทำงานทั้งหมดคุณยังสามารถตั้งค่าได้ภายใต้

Window->
  Preferences->
    Java->
      Installed JREs

JRE แต่ละรายการมี "อาร์กิวเมนต์ VM ที่เป็นค่าเริ่มต้น" (ซึ่งฉันเชื่อว่าถูกละเว้นอย่างสมบูรณ์หากมีการตั้งค่า VM args สำหรับการกำหนดค่าการรัน)

คุณสามารถตั้งค่า JRE / JDK ที่แตกต่างกันด้วยพารามิเตอร์ที่แตกต่างกันและให้บางโครงการใช้หนึ่งโครงการอื่น ๆ ใช้โครงการอื่น



6

เพียงเพิ่ม*.dllไฟล์ลงในของคุณc:/windows

คุณสามารถรับ java.library.path จากรหัสติดตามแล้วเพิ่มไฟล์ dll คุณภายใต้เส้นทางที่คุณได้รับ

import java.util.logging.Logger;

public class Test {


    static Logger logger = Logger.getLogger(Test.class.getName());
    public static void main(String[] args) {
    logger.info(System.getProperty("java.library.path"));
    }
}

นี่หมายความว่าทุกคนที่ใช้โครงการของคุณจะต้องใส่พวกเขาด้วย
xtofl

ขอบคุณสำหรับสิ่งนี้. แนวคิดของการนำ DLLs มาc:/windowsพิสูจน์ให้ฉันรู้ว่ามันเป็นเพียงปัญหาของเส้นทางและไม่ใช่ปัญหากับ DLLs
vegemite4me

5

วิธีการแก้ปัญหาด้านบนไม่ทำงานสำหรับฉัน (Eclipse Juno กับ JDK 1.7_015) Java หาไลบรารีได้เฉพาะเมื่อฉันย้ายจาก project_folder / lib ไปยัง project_folder


อะไร? ทำไมมันจึงสำคัญ .. O_o
Campa

5

java.library.pathผมคิดว่ามีเหตุผลที่ต้องการอีกชุดหนึ่ง การโค่นล้มมาพร้อมกับไลบรารีจำนวนมากและ Eclipse จะไม่เห็นสิ่งเหล่านี้จนกว่าจะjava.library.pathสามารถต่อท้าย ตัวอย่างเช่นฉันใช้ OS-X ดังนั้นห้องสมุดจึงอยู่ภายใต้\opt\subversion\libเพื่อให้ห้องสมุดที่อยู่ภายใต้ มีจำนวนมากและฉันต้องการเก็บไว้ในที่ที่พวกเขาอยู่ (ไม่คัดลอกลงในไดเรกทอรี lib มาตรฐาน)

การตั้งค่าโครงการจะไม่แก้ไข


ฉันต้องเพิ่มพารามิเตอร์ java.library.path ที่ไหน
eLRuLL

4

คลิกเรียกใช้
คลิกดีบั๊ก ...
แอปพลิเคชัน Java ใหม่
คลิกอาร์กิวเมนต์แท็บ
ในกล่องที่ 2 (อาร์กิวเมนต์ VM) เพิ่มรายการ -D

-Xdebug -verbose:gc -Xbootclasspath/p:jar/vbjorb.jar;jar/oracle9.jar;classes;jar/mq.jar;jar/xml4j.jar -classpath -DORBInitRef=NameService=iioploc://10.101.2.94:8092/NameService  

ฯลฯ ...


1
นอกจากนี้ - ในการกำหนดค่าการเรียกใช้ให้ไปที่แท็บ "ทั่วไป" และเลือกสถานที่ในโครงการของคุณเพื่อบันทึกการกำหนดค่าการทำงาน สิ่งนี้ช่วยให้คุณสามารถเช็คอินการกำหนดค่าการเรียกใช้ (ไฟล์ xxxx.launch) เพื่อให้คนอื่น ๆ ในทีมของคุณสามารถนำมาใช้ซ้ำได้
Scott Stanchfield

3

วิธีแก้ไขอื่นคือเปิด 'เรียกใช้การกำหนดค่า' จากนั้นในแท็บ 'สภาพแวดล้อม' ให้ตั้งค่า {Path, Value} คู่

ตัวอย่างเช่นการเพิ่มไดเรกทอรี 'lib' ที่อยู่ที่รูทของโครงการ

    Path  <-  ${workspace_loc:name_of_the_project}\lib

แต่บางทีอาร์กิวเมนต์ VM โดยตรง-Djava.library.pathในแท็บอาร์กิวเมนต์ ?
Campa


1

ฉันใช้ Mac OS X Yosemite และ Netbeans 8.02 ฉันได้รับข้อผิดพลาดเดียวกันและวิธีแก้ปัญหาง่ายๆที่ฉันพบคือเหมือนข้างต้นสิ่งนี้มีประโยชน์เมื่อคุณจำเป็นต้องรวมไลบรารี่ดั้งเดิมในโครงการ ดังนั้นทำต่อไปสำหรับ Netbeans:

1.- Right click on the Project
2.- Properties
3.- Click on RUN
4.- VM Options: java -Djava.library.path="your_path"
5.- for example in my case: java -Djava.library.path=</Users/Lexynux/NetBeansProjects/NAO/libs>
6.- Ok

ฉันหวังว่ามันจะมีประโยชน์สำหรับใครบางคน ลิงค์ที่ฉันพบวิธีแก้ปัญหาอยู่ที่นี่: java.library.path - มันคืออะไรและใช้อย่างไร


0

บางครั้งเราไม่ได้รับ Java Build Path โดยการคลิกขวาที่โครงการโดยตรง จากนั้นไปที่คุณสมบัติ ....คลิกขวาและไปที่คุณสมบัติ

จากนั้นคลิกที่เส้นทางการสร้าง javaคุณสมบัติ Scrren

คลิกที่เพิ่มโถภายนอก

คลิกที่แท็บเพิ่มไหภายนอกและกำหนดพา ธ ของไฟล์คอมพิวเตอร์ของคุณที่คุณมีไหจัดเก็บไว้


0

นี่คือการแก้ไขอื่น:

My build system (Gradle) เพิ่มไลบรารีเนทีฟที่จำเป็น (dll) ลงในพา ธ การสร้าง Eclipse (คลิกขวาที่โปรเจ็กต์ -> คุณสมบัติ -> พา ธ Java Build -> ไลบรารี) บอกระบบบิลด์ไม่ให้เพิ่มไลบรารี่ dll พื้นเมืองลงใน Eclipse classpath เพื่อแก้ปัญหา


0

คุณสามารถเพิ่มอาร์กิวเมนต์ vm ใน Eclipse ของคุณ

ตัวอย่าง:

-Djava.ext.dirs=cots_lib

cots_libไลบรารีโฟลเดอร์ภายนอกของคุณอยู่ที่ไหน


-1

วิธีที่ง่ายที่สุดคือการใช้ eclipse IDE เอง ไปที่เมนูและตั้งค่าเส้นทางการสร้าง กำหนดให้ชี้ไปที่พา ธ ไฟล์ JAVA JDK และ JRE ในไดเรกทอรีของคุณ หลังจากนั้นคุณสามารถตรวจสอบเส้นทางการสร้างที่จะรวบรวมไฟล์ที่จะถูกตั้งค่า ในโฟลเดอร์ bin ตามค่าเริ่มต้น สิ่งที่ดีที่สุดคือการอนุญาตให้ eclipse จัดการตัวเองเส้นทางการสร้างและแก้ไขได้คล้ายกับโซลูชันที่ให้ไว้ข้างต้นเท่านั้น

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