So legen Sie den Pfad java.library.path in Eclipse fest

209

Wie kann ich das java.library.pathfür ein ganzes Eclipse-Projekt festlegen ? Ich verwende eine Java-Bibliothek, die auf betriebssystemspezifischen Dateien basiert und eine finden muss .dll/ .so/ .jnilib. Die Anwendung wird jedoch immer mit der Fehlermeldung beendet, dass diese Dateien nicht im Bibliothekspfad gefunden werden.

Ich möchte dieses gesamte Projekt so konfigurieren, dass es den Bibliothekspfad verwendet. Ich habe versucht, den Pfad als VM-Argument zu einigen Ausführungskonfigurationen in Eclipse hinzuzufügen, aber das hat nicht funktioniert.

Janusz
quelle
1
Ich habe es getan, indem ich es als VM-Argument hinzugefügt habe, und es hat funktioniert. Wie genau hast du das gemacht?
Michael Myers

Antworten:

297

Leg dich nicht mit dem Bibliothekspfad an! Eclipse baut es selbst!

Gehen Sie stattdessen in die Bibliothekseinstellungen für Ihre Projekte und erweitern Sie sie für jede JAR / etc, für die eine native Bibliothek erforderlich ist, auf der Registerkarte Bibliotheken . In der dortigen Baumansicht enthält jede Bibliothek Elemente für Quell- / Javadoc- und native Bibliotheksstandorte.

Insbesondere: Wählen Sie Project, klicken Sie mit der rechten Maustaste -> Eigenschaften / Java-Erstellungspfad / Bibliotheken , wählen Sie eine JAR-Datei aus, erweitern Sie sie, wählen Sie den Speicherort der nativen Bibliothek aus und klicken Sie auf Bearbeiten nativen . Das Dialogfeld zur Ordnerauswahl wird angezeigt.

Das Durcheinander mit dem Bibliothekspfad in der Befehlszeile sollte Ihre letzte Anstrengung sein, da Sie möglicherweise etwas beschädigen, das bereits durch Eclipse richtig festgelegt wurde.

Standort der nativen Bibliothek

John Gardner
quelle
6
Aber wie funktioniert das, wenn Sie mehr als einen Ordner hinzufügen müssen?
Dan
2
Das ist eine gute Frage. Warum haben Sie mehr als einen Ordner mit nativen Bibliotheken für ein Glas? Ich bin mir ziemlich sicher, dass es einen Weg gibt, wie Sie die nativen Bibliotheken selbst in das Glas einbetten können. Das könnte also der richtige Weg sein?
John Gardner
1
Ich arbeite an einem Legacy-Projekt, über das ich nur sehr wenig Kontrolle habe. Ich kann die Projektstruktur sicherlich nicht ändern. Meine Problemumgehung besteht im Moment darin, alles auf meinen Pfad zu setzen - aber das ist nicht so schön.
Dan
1
Je nach Betriebssystem können Sie ein Verzeichnis erstellen, das alle symbolischen Links zu den anderen Bibliotheken enthält. oder zumindest zu Entwicklungszwecken könnten Sie alle Bibliotheken in ein Verzeichnis kopieren.
John Gardner
2
Ich kann diesen Stock nicht machen. Ich kann den nativen Bibliothekspfad hinzufügen, aber wenn ich auf OK klicke, um den gesamten Weg zurück zu gehen, und dann wieder in die Projekteigenschaften springe, wird "Keine" angezeigt. Ich benutze Eclipse Indigo SR2
Bacar
37

Wenn Sie es als VM-Argument hinzufügen, stellen Sie sicher, dass Sie Folgendes voranstellen -D:

-Djava.library.path=blahblahblah...
matt b
quelle
3
Siehe diesen Beitrag: stackoverflow.com/a/2309723/510583 . -Djava.library.path = "$ {workspace_loc: project} \ lib; $ {env_var: PATH}"
Leo
23

Abgesehen von der in der genehmigten Antwort beschriebenen Methode gibt es eine andere Möglichkeit, wenn Sie einzelne native Bibliotheken in Ihrem Projekt haben.

  • Unter Projekteigenschaften-> Java-Erstellungspfad-> Registerkarte "Quelle" finden Sie eine Liste Ihrer Quellordner
  • Für jeden Eintrag gibt es "Native Library Locations", die auch Pfade innerhalb des Arbeitsbereichs unterstützen.
  • Dadurch fügt Eclipse es Ihrem hinzu java.library.path.
schieferstapel
quelle
2
genial!!!! Vielen Dank!!! das hat mein Problem gelöst. Ich musste meinem Projekt Dylib und ein Glas hinzufügen. Das Einstellen des nativen Bibliotheksstandorts wurde behoben!
UFK
11

Für einen bestimmten Anwendungsstart können Sie dies tun, wie Jim sagt.

Wenn Sie es für den gesamten Arbeitsbereich festlegen möchten, können Sie es auch unter festlegen

Window->
  Preferences->
    Java->
      Installed JREs

Jede JRE verfügt über "Standard-VM-Argumente" (die meines Erachtens vollständig ignoriert werden, wenn VM-Argumente für eine Ausführungskonfiguration festgelegt werden.)

Sie können sogar verschiedene JRE / JDKs mit unterschiedlichen Parametern einrichten und einige Projekte verwenden, andere Projekte andere.

Scott Stanchfield
quelle
8

Sie können fügen Sie einfach -Djava.library.path=yourPathauf die eclipse.ini.

Sonaht
quelle
6

Fügen Sie einfach die *.dllDateien zu Ihrem hinzuc:/windows

Sie können den Pfad java.library.path aus den folgenden Codes abrufen: und dann Ihre DLL-Dateien unter einem beliebigen Pfad hinzufügen, den Sie erhalten

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"));
    }
}
Herr Lou
quelle
Dies würde bedeuten, dass jeder, der Ihr Projekt verwendet, diese auch dort ablegen müsste.
xtofl
Danke dafür. Die Idee, die DLLs c:/windowseinzufügen, hat mir gezeigt, dass es sich nur um ein Pfadproblem handelt und nicht um ein Problem mit den DLLs.
vegemite4me
5

Keine der oben genannten Lösungen hat bei mir funktioniert (Eclipse Juno mit JDK 1.7_015). Java konnte die Bibliotheken nur finden, wenn ich sie von project_folder / lib nach project_folder verschoben habe.

Günter
quelle
Was? Warum sollte das wichtig sein ..? O_o
Campa
5

Ich denke, es gibt noch einen anderen Grund, sich setzen zu wollen java.library.path. Subversion enthält viele Bibliotheken, die von Eclipse nur angezeigt werden, wenn java.library.pathsie angehängt werden können. Zum Beispiel bin ich auf OS-X, also sind die Bibliotheken unter \opt\subversion\lib. Es gibt viele von ihnen und ich möchte sie dort lassen, wo sie sind (nicht in ein Standard-lib-Verzeichnis kopieren).

Die Projekteinstellungen beheben dies nicht.

user825628
quelle
Wo muss ich dann die Parameter java.library.path hinzufügen?
eLRuLL
4

Klicken Sie auf Ausführen.
Klicken Sie auf Debuggen ...
Neue Java-Anwendung.
Klicken Sie
im zweiten Feld (VM-Argumente) auf die Registerkarte Argumente. Fügen Sie den Eintrag -D hinzu

-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  

etc...

Jim
quelle
1
Gehen Sie in der Ausführungskonfiguration zur Registerkarte "Allgemein" und wählen Sie einen Ort in Ihrem Projekt aus, an dem die Ausführungskonfiguration gespeichert werden soll. Auf diese Weise können Sie diese Ausführungskonfiguration (Datei xxxx.launch) einchecken, damit andere Mitglieder Ihres Teams sie wiederverwenden können.
Scott Stanchfield
3

Eine andere Lösung wäre, die 'Konfiguration ausführen' zu öffnen und dann auf der Registerkarte 'Umgebung' das Paar {Pfad, Wert} festzulegen.

Um beispielsweise ein 'lib'-Verzeichnis hinzuzufügen, das sich im Stammverzeichnis des Projekts befindet,

    Path  <-  ${workspace_loc:name_of_the_project}\lib
Aurelien
quelle
Aber vielleicht direkt das VM-Argument -Djava.library.pathauf der Registerkarte Argumente ?
Campa
1

Denken Sie daran, den nativen Bibliotheksordner in PATH aufzunehmen.

JuanFran Adame
quelle
1

Ich verwende Mac OS X Yosemite und Netbeans 8.02. Ich habe den gleichen Fehler erhalten und die einfache Lösung, die ich gefunden habe, ist wie oben. Dies ist nützlich, wenn Sie eine native Bibliothek in das Projekt aufnehmen müssen. Machen Sie das nächste für 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

Ich hoffe, es könnte für jemanden nützlich sein. Der Link, unter dem ich die Lösung gefunden habe, ist hier: java.library.path - Was ist das und wie wird es verwendet?

alexventuraio
quelle
0

Manchmal erhalten wir keinen Java Build Path, wenn Sie direkt mit der rechten Maustaste auf das Projekt klicken. dann gehen Sie zu Eigenschaften ....Klicken Sie mit der rechten Maustaste und gehen Sie zu den Eigenschaften

Klicken Sie dann auf Java Build PathEigenschaften Scrren

Klicken Sie auf Externes Glas hinzufügen

Klicken Sie auf die Registerkarte Externe Gläser hinzufügen und geben Sie den Pfad Ihrer Computerdatei an, in der Sie Gläser gespeichert haben.

Vardhaman
quelle
0

Hier ist ein weiterer Fix:

Mein Build-System (Gradle) hat dem Eclipse-Build-Pfad eine erforderliche native Bibliothek (DLL) hinzugefügt (Rechtsklick auf Projekt -> Eigenschaften -> Java-Build-Pfad -> Bibliotheken). Das Problem wurde behoben, indem das Build-System angewiesen wurde, die native DLL-Bibliothek nicht zum Eclipse-Klassenpfad hinzuzufügen.

marc
quelle
0

Sie können vm-Argumente in Ihre Eclipse einfügen.

Beispiel:

-Djava.ext.dirs=cots_lib

Wo cots_libist Ihre externe Ordnerbibliothek?

della pramukti raharjo
quelle
-1

Am einfachsten wäre es, die Eclipse-IDE selbst zu verwenden. Gehen Sie zum Menü und legen Sie den Erstellungspfad fest. Zeigen Sie auf den JAVA JDK- und JRE-Dateipfad in Ihrem Verzeichnis. Anschließend können Sie den Erstellungspfad überprüfen, in dem kompilierte Dateien festgelegt werden sollen. Standardmäßig jedoch im Ordner bin. Das Beste wäre, Eclipse zu erlauben, sich selbst mit dem Erstellungspfad zu befassen und ihn nur ähnlich wie die oben angegebene Lösung zu bearbeiten

khangulmalik
quelle