Saya mendapat perpustakaan asli yang perlu ditambahkan ke java.library.path . Dengan argumen JVM -Djava.library.path = path ... Saya bisa mengatur path sesuai keinginan.
Masalah saya adalah bahwa perpustakaan saya yang lain (pelaporan pentaho) mencari font berdasarkan default java.library.path (termasuk direktori sistem dll) dan pengaturan manual menimpa jalur default ..
Jadi: bagaimana saya bisa menambahkan entri path ke java.library.path default daripada menimpanya (yang tampaknya dilakukan dengan -Djava.library.path)? (Saya tidak ingin menambahkan jalur default secara manual, yang tidak akan bagus demi penerapan)
EDIT: Maaf untuk detail yang hilang; Saya bekerja dengan Eclipse. ( Penerapan dilakukan dengan JNLP dan di sana saya dapat menggunakan nativelib di bawah sumber daya )
sumber
Jawaban:
Telah melupakan masalah ini ... Saya sebenarnya bertanya dengan Eclipse, maaf karena tidak menyatakannya pada awalnya. Dan jawabannya tampaknya terlalu sederhana (setidaknya dengan 3.5; mungkin dengan versi yang lebih lama juga):
Argumen konfigurasi yang dijalankan Java: Argumen VM:
-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"
Jangan lupa tanda petiknya, jika tidak, ada masalah dengan spasi di PATH.
sumber
Jika Anda ingin menambahkan perpustakaan asli tanpa mengganggu
java.library.path
waktu pengembangan di Eclipse (untuk menghindari menyertakan jalur absolut dan harus menambahkan parameter ke konfigurasi peluncuran Anda), Anda dapat menyediakan jalur ke lokasi perpustakaan asli untuk setiap Jar di Java Build Dialog jalur di bawah Lokasi perpustakaan asli . Perhatikan bahwa nama file perpustakaan asli harus sesuai dengan nama file Jar. Lihat juga penjelasan rinci ini .sumber
java.library.path
dan kembali setelah menemukan solusi di tempat lain. Akan mengedit jawaban saya untuk membuatnya lebih jelas.SWT menempatkan DLL native yang diperlukan ke dalam JAR. Telusuri "org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar" sebagai contoh.
DLL harus berada di root JAR, JAR harus ditandatangani dan DLL harus muncul dengan checksum di META-INF / MANIFEST.MF agar VM dapat mengambilnya.
sumber
java.library.path
. Apakah Anda menyarankan bahwa itu hanya mencari akarjar
?Di Windows, seperti ini:
-Djava.library.path = "C: / MyLibPath;% PATH%"
% PATH% adalah -Djava.library.path lama Anda
sumber
Bisakah Anda mengatasi ini dengan memanggil System.load () secara terprogram untuk memuat perpustakaan asli Anda? Metode ini (tidak seperti System.loadLibrary () ) memungkinkan Anda menentukan jalur absolut.
sumber
https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 menyatakan bahwa tidak ada mekanisme substitusi yang diterapkan di peluncur Eclipse, setidaknya tidak hingga rilis Juno.
Oleh karena itu (hampir) tidak mungkin untuk menambahkan atau menambahkan folder pustaka lain ke java.library.path saat meluncurkan Eclipse tanpa pengetahuan sebelumnya tentang setelan default.
Saya menulis hampir, karena itu memungkinkan untuk membiarkan Eclipse startup, membuang konten java.library.path dan menghentikan Eclipse dalam satu perintah. Dump tersebut akan diurai dan kemudian diambil sebagai masukan untuk meluncurkan Eclipse, yaitu
#!/bin/bash # get default value of java.library.path (somehow) default_lib_path=$( start_dump_stop_eclipse_somehow ) # now launch Eclipse eclipse --launcher.appendVmargs \ -vmargs \ -Djava.library.path="/my/native/lib/folder:${default_lib_path}"
sumber
Dalam sistem UNIX, Anda dapat menambahkan variabel lingkungan LD_LIBRARY_PATH. Pada Windows, JVM secara otomatis menyetel properti sistem, java.library.path, ke PATH; jadi jika dll ada di PATH Anda, maka Anda sudah siap.
sumber
Jendela-> Preferensi-> Java-> JRE Terinstal. Kemudian pilih JRE (JDK) Anda saat ini dan klik Edit. Isi Argumen VM Default: -Djava.library.path = / usr / local / xuggler / lib. Selesai!
sumber
Solusi yang ditawarkan oleh Rob Elsner di salah satu komentar di atas berfungsi dengan sempurna (OSX 10.9, Eclipse Kepler). Seseorang harus menambahkan jalur tambahannya ke yang dipisahkan oleh ":".
sumber
Nama file perpustakaan asli harus sesuai dengan nama file Jar. Ini sangat penting. Pastikan nama jar dan nama dll sama. Juga, silakan lihat posting dari Fabian Steeg Unduhan saya untuk jawin berisi nama yang berbeda untuk dll dan jar. Itu jawin.jar dan jawin d .dll, catat tambahan 'd' di nama file dll. Saya hanya mengganti namanya menjadi jawin.dll dan menetapkannya sebagai perpustakaan asli di gerhana seperti yang disebutkan dalam pos " http://www.eclipsezone.com/eclipse/forums/t49342.html "
sumber
Untuk beberapa alasan saya tidak bisa mendapatkan banyak folder untuk bekerja (baik itu dilakukan untuk sementara waktu tetapi segera setelah saya membutuhkan lebih banyak dll dan menambahkan lebih banyak folder, tidak ada yang memiliki ruang putih di jalur). Saya kemudian menyalin semua dll yang diperlukan ke satu folder dan memilikinya sebagai java.library.path saya dan itu berhasil. Saya tidak punya penjelasan - jika ada yang tahu, itu akan bagus.
sumber
Banyak dari jawaban yang ada menganggap Anda ingin mengatur ini untuk proyek tertentu, tetapi saya perlu mengaturnya untuk Eclipse itu sendiri untuk mendukung otentikasi terintegrasi untuk driver SQL Server JDBC.
Untuk melakukan ini, saya mengikuti petunjuk ini untuk meluncurkan Eclipse dari baris perintah Java alih-alih peluncur normalnya. Lalu saya baru saja memodifikasi skrip itu untuk menambahkan argumen -Djava.library.path saya ke baris perintah Java.
sumber
java.library.path
diawali dengan nilai variabel di atas pada platform yang sesuai.Ini harus bekerja pada IDE apa pun.
Anda dapat menguji apakah nilainya sesuai dengan yang Anda harapkan dengan menelepon
java -XshowSettings:properties
sumber
Di Windows, saya telah menemukan bahwa yang penting adalah memulai Eclipse dari baris perintah daripada dari Start Menu atau pintasan, asalkan DLL asli ada dalam direktori di PATH Anda. Rupanya, ini memastikan bahwa direktori yang tepat berada di jalurnya.
sumber