Cara mengatur java.library.path dari Eclipse


209

Bagaimana saya dapat mengatur java.library.pathuntuk seluruh Proyek Eclipse? Saya menggunakan perpustakaan Java yang bergantung pada file OS tertentu dan perlu menemukan .dll/ .so/ .jnilib. Tetapi Aplikasi selalu keluar dengan pesan kesalahan bahwa file-file itu tidak ditemukan di jalur perpustakaan.

Saya ingin mengonfigurasi seluruh proyek ini untuk menggunakan jalur perpustakaan. Saya mencoba menambahkan path sebagai argumen VM untuk menjalankan beberapa konfigurasi di gerhana tetapi itu tidak berhasil.


1
Saya sudah melakukannya dengan menambahkannya sebagai argumen VM dan itu berhasil. Bagaimana tepatnya Anda melakukannya?
Michael Myers

Jawaban:


297

Jangan main-main dengan jalur perpustakaan! Eclipse membangunnya sendiri!

Sebagai gantinya, masuk ke pengaturan perpustakaan untuk proyek Anda dan, untuk setiap jar / dll yang membutuhkan perpustakaan asli, perluas itu di tab Perpustakaan . Pada tampilan hierarki di sana, setiap perpustakaan memiliki item untuk sumber / javadoc dan lokasi perpustakaan asli.

Khususnya: pilih Project, klik kanan -> Properties / Java Build Path / Libraries tab, pilih .jar, perluas, pilih lokasi pustaka Asli , klik Edit , dialog pemilih folder akan muncul)

Bercak dengan jalur pustaka pada baris perintah harus menjadi upaya terakhir Anda, karena Anda mungkin memecahkan sesuatu yang sudah diatur dengan benar oleh gerhana.

Lokasi perpustakaan asli


6
Tetapi bagaimana cara kerjanya jika Anda memiliki lebih dari satu folder untuk ditambahkan?
Dan

2
itu pertanyaan yang bagus. Mengapa Anda memiliki lebih dari satu folder perpustakaan asli untuk satu toples? Saya cukup yakin ada cara di mana Anda dapat menanamkan perpustakaan asli sendiri ke dalam toples, sehingga mungkin cara untuk pergi?
John Gardner

1
Saya sedang mengerjakan proyek warisan di mana saya memiliki sedikit kontrol. Saya tentu saja tidak dapat mengubah struktur proyek. Solusi saya untuk saat ini adalah meletakkan semuanya di PATH saya - tapi itu tidak begitu baik.
Dan

1
tergantung pada OS, Anda dapat membuat satu direktori yang semua tautan simbolik ke perpustakaan lain? atau setidaknya untuk tujuan pengembangan Anda dapat menyalin semua lib ke satu direktori.
John Gardner

2
Saya tidak bisa membuat tongkat ini. Saya dapat menambahkan jalur pustaka asli, tetapi ketika saya mengklik OK untuk kembali lagi lalu beralih ke properti proyek lagi, dikatakan "Tidak Ada". Saya menggunakan eclipse Indigo SR2
bacar

37

Jika Anda menambahkannya sebagai argumen VM, pastikan Anda awali dengan -D:

-Djava.library.path=blahblahblah...

3
Lihat posting ini: stackoverflow.com/a/2309723/510583 . -Djava.library.path = "$ {workspace_loc: project} \ lib; $ {env_var: PATH}"
leo

23

Kecuali cara yang dijelaskan dalam jawaban yang disetujui, ada cara lain jika Anda memiliki lib asli tunggal dalam proyek Anda.

  • di Project properties-> Java Build Path-> Tab "Source" ada daftar folder sumber Anda
  • Untuk setiap entri, ada "Lokasi perpustakaan asli", yang juga mendukung jalur di dalam ruang kerja.
  • Ini akan membuat Eclipse menambahkannya ke java.library.path.

2
luar biasa !!!! Terima kasih banyak!!! yang menyelesaikan masalah saya. perlu menambahkan dylib ke proyek saya dan toples. mengatur lokasi perpustakaan asli memperbaikinya!
ufk

11

Untuk peluncuran aplikasi tertentu, Anda dapat melakukannya seperti yang dikatakan jim.

Jika Anda ingin mengaturnya untuk seluruh ruang kerja, Anda juga dapat mengaturnya di bawah

Window->
  Preferences->
    Java->
      Installed JREs

Setiap JRE memiliki "Argumen VM Default" (yang saya yakini sepenuhnya diabaikan jika ada argumen VM yang diatur untuk menjalankan konfigurasi.)

Anda bahkan dapat mengatur JRE / JDK yang berbeda dengan parameter yang berbeda dan beberapa proyek menggunakan satu, proyek lain menggunakan yang lain.


8

Anda hanya dapat menambahkan -Djava.library.path=yourPathke eclipse.ini.


6

Cukup tambahkan *.dllfile ke file Andac:/windows

Anda bisa mendapatkan java.library.path dari kode follow: dan kemudian menambahkan Anda file dll di bawah jalur apa pun yang Anda dapatkan

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"));
    }
}

Ini berarti bahwa setiap orang yang menggunakan proyek Anda juga perlu meletakkannya di sana.
xtofl

Terima kasih untuk ini. Gagasan menempatkan DLL ke dalam c:/windowsmembuktikan kepada saya bahwa itu hanya masalah jalur dan bukan masalah dengan DLL.
vegemite4me

5

Tidak ada solusi di atas yang berfungsi untuk saya (Eclipse Juno dengan JDK 1.7_015). Java hanya bisa menemukan perpustakaan ketika saya memindahkannya dari project_folder / lib ke project_folder.


Apa? Kenapa itu harus penting ..? O_o
Campa

5

Saya pikir ada alasan lain untuk ingin mengatur java.library.path. Subversion datang dengan banyak perpustakaan dan Eclipse tidak akan melihatnya kecuali java.library.pathdapat ditambahkan. Misalnya saya menggunakan OS-X, jadi perpustakaan di bawah \opt\subversion\lib. Ada banyak dari mereka dan saya ingin menyimpannya di tempat mereka (tidak menyalinnya ke direktori lib standar).

Pengaturan proyek tidak akan memperbaikinya.


lalu, di mana saya perlu menambahkan parameter java.library.path?
eLRuLL

4

Klik Jalankan
Klik Debug ...
Aplikasi Java Baru
Klik tab Argumen
di kotak 2 (VM Arguments) tambahkan entri -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  

dll ...


1
Juga - dalam konfigurasi run, buka tab "Common" dan pilih tempat di proyek Anda untuk menyimpan konfigurasi run. Ini memungkinkan Anda untuk memeriksa konfigurasi menjalankan (file xxxx.launch) sehingga orang lain di tim Anda dapat menggunakannya kembali.
Scott Stanchfield

3

Solusi lain adalah membuka 'jalankan konfigurasi' dan kemudian di tab 'Lingkungan', atur pasangan {Path, Value}.

Misalnya untuk menambahkan direktori 'lib' yang terletak di root proyek,

    Path  <-  ${workspace_loc:name_of_the_project}\lib

Tapi mungkin langsung argumen VM -Djava.library.pathdi tab Argumen ?
Campa


1

Saya menggunakan Mac OS X Yosemite dan Netbeans 8.02, saya mendapatkan kesalahan yang sama dan solusi sederhana yang saya temukan adalah seperti di atas, ini berguna ketika Anda perlu memasukkan perpustakaan asli dalam proyek. Jadi lakukan yang berikutnya untuk 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

Semoga bermanfaat bagi seseorang. Tautan tempat saya menemukan solusinya ada di sini: java.library.path - Apa itu dan bagaimana menggunakannya


0

Kadang-kadang kita tidak mendapatkan Java Build Path dengan langsung mengklik kanan pada proyek. lalu pergi ke properti ....Klik kanan dan pergi ke properti

Kemudian Klik pada java build pathProperti Scrren

Klik pada tambahkan jar eksternal

Klik pada tab tambahkan guci eksternal dan berikan jalur file komputer Anda di mana Anda menyimpan guci.


0

Ini adalah perbaikan lain:

Sistem build saya (Gradle) menambahkan library asli yang diperlukan (dll) ke jalur build Eclipse (Klik kanan pada Project -> Properties -> Java Build Path -> Libraries). Memberitahu sistem build untuk tidak menambahkan perpustakaan dll asli ke classpath Eclipse memecahkan masalah.


0

Anda dapat menambahkan argumen vm di Eclipse Anda.

Contoh:

-Djava.ext.dirs=cots_lib

di mana cots_libperpustakaan folder eksternal Anda.


-1

cara termudah untuk menggunakan IDE gerhana itu sendiri. Pergi ke menu dan atur path build. Arahkan ke jalur file JAW JDK dan JRE di direktori Anda. setelah itu Anda dapat memeriksa jalur pembangunan tempat file yang dikompilasi akan ditetapkan. dalam folder bin secara default. Hal terbaik adalah mengizinkan gerhana untuk menangani sendiri jalur pembangunan dan hanya mengeditnya mirip dengan solusi yang diberikan di atas

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.