Jak ustawić ścieżkę java.library.path z Eclipse


209

Jak mogę ustawić java.library.pathdla całego projektu Eclipse? Używam biblioteki Java, która opiera się na plikach specyficznych dla systemu operacyjnego i muszę znaleźć plik .dll/ .so/ .jnilib. Ale aplikacja zawsze kończy pracę z komunikatem o błędzie, że tych plików nie znaleziono na ścieżce biblioteki.

Chciałbym skonfigurować cały ten projekt do korzystania ze ścieżki biblioteki. Próbowałem dodać ścieżkę jako argument maszyny wirtualnej do niektórych konfiguracji uruchamiania w środowisku Eclipse, ale to nie działało.


1
Zrobiłem to, dodając go jako argument maszyny wirtualnej i zadziałało. Jak dokładnie to zrobiłeś?
Michael Myers

Odpowiedzi:


297

Nie zadzieraj ze ścieżką biblioteki! Eclipse sam to buduje!

Zamiast tego przejdź do ustawień bibliotek dla swoich projektów i, dla każdego jar / etc, który wymaga biblioteki rodzimej, rozwiń ją w zakładce Biblioteki . W widoku drzewa tam każda biblioteka zawiera elementy dla źródła / javadoc i natywne lokalizacje bibliotek.

W szczególności: wybierz Project, kliknij prawym przyciskiem myszy -> karta Właściwości / Ścieżka kompilacji Java / Biblioteki , wybierz plik .jar, rozwiń go, wybierz Natywną lokalizację biblioteki , kliknij Edytuj , pojawi się okno wyboru folderów)

Twój ostatni wysiłek przy robieniu bałaganu ze ścieżką do biblioteki powinien być twoim ostatnim wysiłkiem, ponieważ możesz zepsuć coś, co jest już poprawnie ustawione przez zaćmienie.

Lokalizacja natywnej biblioteki


6
Ale jak to działa, jeśli masz więcej niż jeden folder do dodania?
Dan

2
to dobre pytanie. Dlaczego masz więcej niż jeden folder bibliotek rodzimych dla jednego słoika? Jestem prawie pewien, że istnieje sposób, w jaki można osadzić same biblioteki natywne w słoiku, więc może to być właściwy sposób?
John Gardner

1
Pracuję nad starszym projektem, nad którym mam bardzo niewielką kontrolę. Z pewnością nie mogę zmienić struktury projektu. Obecnie moim obejściem jest umieszczenie wszystkiego na mojej ŚCIEŻCE - ale to nie jest takie miłe.
Dan

1
w zależności od systemu operacyjnego, możesz utworzyć jeden katalog, który zawiera wszystkie dowiązania symboliczne do innych bibliotek? lub przynajmniej w celach programistycznych możesz skopiować wszystkie biblioteki lib do jednego katalogu.
John Gardner

2
Nie mogę tego zrobić. Mogę dodać ścieżkę rodzimej biblioteki, ale kiedy kliknę OK, aby wyjść z powrotem, a następnie ponownie przejdę do właściwości projektu, pojawi się komunikat „Brak”. Używam zaćmienia Indigo SR2
Bacar

37

Jeśli dodajesz go jako argument maszyny wirtualnej, pamiętaj, aby poprzedzić go -D:

-Djava.library.path=blahblahblah...

3
Zobacz ten post: stackoverflow.com/a/2309723/510583 . -Djava.library.path = "$ {workspace_loc: project} \ lib; $ {env_var: PATH}"
Leo

23

Oprócz sposobu opisanego w zatwierdzonej odpowiedzi, istnieje inny sposób, jeśli masz w swoim projekcie pojedyncze natywne biblioteki lib.

  • we właściwościach projektu-> Ścieżka kompilacji Java-> Karta „Źródło” znajduje się lista folderów źródłowych
  • Dla każdego wpisu znajdują się „Natywne lokalizacje bibliotek”, które obsługują również ścieżki w obszarze roboczym.
  • To sprawi, że Eclipse doda to do twojego java.library.path.

2
niesamowite!!!! wielkie dzięki!!! to rozwiązało mój problem. musiałem dodać dylib do mojego projektu i słoik. naprawiono ustawienie ustawienia natywnej biblioteki!
ufk

11

Dla danego uruchomienia aplikacji możesz to zrobić, jak mówi Jim.

Jeśli chcesz ustawić go dla całego obszaru roboczego, możesz również ustawić go pod

Window->
  Preferences->
    Java->
      Installed JREs

Każde środowisko JRE ma „Domyślne argumenty maszyny wirtualnej” (które, jak sądzę, są całkowicie ignorowane, jeśli dla konfiguracji uruchamiania ustawiono argumenty maszyny wirtualnej).

Możesz nawet skonfigurować różne środowiska JRE / JDK o różnych parametrach i niektóre projekty używają jednego, inne projekty używają innego.


8

Możesz po prostu dodać -Djava.library.path=yourPathdo eclipse.ini.


6

Po prostu dodaj *.dllpliki do swojegoc:/windows

Możesz pobrać plik java.library.path z następujących kodów: a następnie dodać pliki dll pod dowolną ścieżką

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

Oznaczałoby to, że wszyscy korzystający z Twojego projektu również musieliby je tam umieścić.
xtofl

Dzięki za to. Pomysł umieszczenia bibliotek DLL c:/windowsudowodnił mi, że był to tylko problem ścieżki, a nie problem z bibliotekami DLL.
vegemite4me

5

Żadne z powyższych rozwiązań nie działało dla mnie (Eclipse Juno z JDK 1.7_015). Java mogła znaleźć biblioteki tylko wtedy, gdy przeniosłem je z folderu_projektu / lib do folderu_projektu.


Co? Dlaczego to powinno być ważne ..? O_o
Campa,

5

Myślę, że istnieje inny powód, dla którego warto ustawić java.library.path. Subversion ma wiele bibliotek, a Eclipse ich nie zobaczy, chyba że java.library.pathbędzie można je dołączyć. Na przykład korzystam z OS-X, więc biblioteki są poniżej \opt\subversion\lib. Jest ich wiele i chciałbym zachować je tam, gdzie są (nie kopiować ich do standardowego katalogu lib).

Ustawienia projektu tego nie naprawią.


gdzie zatem muszę dodać parametry java.library.path?
eLRuLL

4

Kliknij opcję Uruchom
Kliknij opcję Debuguj ...
Nowa aplikacja Java
Kliknij kartę Argumenty
w drugim polu (Argumenty VM) dodaj wpis -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  

itp...


1
Ponadto - w konfiguracji uruchamiania przejdź do karty „Wspólne” i wybierz miejsce w projekcie, aby zapisać konfigurację uruchomienia. Pozwala to na sprawdzenie tej konfiguracji uruchamiania (plik xxxx.launch), aby inni członkowie zespołu mogli go ponownie użyć.
Scott Stanchfield

3

Innym rozwiązaniem byłoby otwarcie „konfiguracji uruchamiania”, a następnie w zakładce „Środowisko” ustaw parę {Ścieżka, Wartość}.

Na przykład, aby dodać katalog „lib” znajdujący się w katalogu głównym projektu,

    Path  <-  ${workspace_loc:name_of_the_project}\lib

Ale może bezpośrednio argument VM -Djava.library.pathw zakładce Argumenty ?
Campa,


1

Korzystam z systemu Mac OS X Yosemite i Netbeans 8.02, mam ten sam błąd, a proste rozwiązanie, które znalazłem, jest takie jak powyżej, jest to przydatne, gdy musisz uwzględnić bibliotekę natywną w projekcie. Zrób więc następne dla 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

Mam nadzieję, że może się przydać komuś. Link, w którym znalazłem rozwiązanie, znajduje się tutaj: java.library.path - Co to jest i jak używać


0

Czasami nie otrzymujemy ścieżki budowania Java, klikając projekt prawym przyciskiem myszy. następnie przejdź do nieruchomości ....Kliknij prawym przyciskiem myszy i przejdź do właściwości

Następnie kliknij ścieżkę kompilacji JavaWłaściwości Scrren

Kliknij dodaj zewnętrzny słoik

Kliknij kartę, dodaj zewnętrzne słoiki i podaj ścieżkę do pliku komputerowego, w którym masz zapisane słoiki.


0

Oto kolejna poprawka:

Mój system kompilacji (Gradle) dodał wymaganą bibliotekę natywną (dll) do ścieżki kompilacji Eclipse (kliknij prawym przyciskiem myszy Projekt -> Właściwości -> Ścieżka kompilacji Java -> Biblioteki). Mówienie systemowi kompilacji, że nie dodaje natywnej biblioteki DLL do ścieżki klas Eclipse, rozwiązało problem.


0

Możesz dodać argument vm w swoim Eclipse.

Przykład:

-Djava.ext.dirs=cots_lib

gdzie cots_libjest twoja biblioteka folderów zewnętrznych.


-1

najprostszym sposobem byłoby użycie samego środowiska IDE zaćmienia. Przejdź do menu i ustaw ścieżkę kompilacji. Wskaż ścieżkę do pliku JDK i JRE JAVA w katalogu. następnie możesz sprawdzić ścieżkę kompilacji, w której mają być ustawione skompilowane pliki. domyślnie w folderze bin. Najlepszym rozwiązaniem byłoby umożliwienie Eclipse samodzielnego obsłużenia ścieżki kompilacji i edytowania jej tylko w sposób podobny do rozwiązania podanego powyżej

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.