2009-06-05 21 views
196

Wie kann ich die java.library.path für ein ganzes Eclipse-Projekt festlegen? Ich verwende eine Java-Bibliothek, die auf OS-spezifische Dateien angewiesen ist und eine .dll/.so/.jnilib finden muss. Die Anwendung wird jedoch immer mit einer Fehlermeldung beendet, dass diese Dateien nicht im Bibliothekspfad gefunden werden.Wie setze ich den java.library.path von Eclipse

Ich möchte dieses ganze Projekt konfigurieren, um den Bibliothekspfad zu verwenden. Ich habe versucht, den Pfad als VM-Argument zu einigen Laufkonfigurationen in Eclipse hinzuzufügen, aber das hat nicht funktioniert.

+1

Ich habe es getan, indem Sie es als ein VM-Argument hinzufügen, und es hat funktioniert. Wie genau hast du das gemacht? –

Antwort

286

Verwechseln Sie nicht den Bibliothekspfad! Eclipse baut es selbst!

Gehen Sie stattdessen in die Bibliothekseinstellungen für Ihre Projekte und erweitern Sie sie für jedes jar/etc, das eine native Bibliothek benötigt, im Register Libraries. In der Baumansicht enthält jede Bibliothek Elemente für Quellen-/Javadoc- und native Bibliotheksspeicherorte.

Im Einzelnen: Wählen Sie Project, Rechtsklick -> Eigenschaften /Java Build Path/Bibliotheken Registerkarte eine .jar wählen, erweitern Sie es, wählen Sie india Bibliothek Standort, klicken Sie auf bearbeiten, Ordner Chooser Dialog erscheint)

Mit dem Bibliothekspfad in der Befehlszeile zu vermummen sollte Ihr letzter Versuch sein, denn Sie könnten etwas brechen, das bereits richtig von Eclipse gesetzt wurde.

Native library location

+0

OK, das scheint zu funktionieren. Jetzt wird der richtige Pfad tatsächlich in der Fehlermeldung angezeigt. erforderliche Bibliothek nicht gefunden: /Users/janusz/Documents/workspace/SlideSelector/lib/libOpenCV.jnilib. Die Datei befindet sich genau in diesem Verzeichnis. Scheint ein anderer Fehler zu sein – Janusz

+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 JAR? Ich bin mir ziemlich sicher, dass es einen Weg gibt, die nativen Bibliotheken selbst in das Glas einzubetten, also könnte das der richtige Weg sein? –

32

Wenn Sie es als ein VM Argument hinzufügen, stellen Sie sicher, dass Sie es mit -D Präfix:
Klicken Sie Debug ...
Neue Java Application
Klicken Sie Argumente Registerkarte

-Djava.library.path=blahblahblah... 
+3

Siehe diesen Beitrag: http://stackoverflow.com/a/2309723/510583. -Djava.library.path = "$ {workspace_loc: project} \ lib; $ {env_var: PATH}" – leo

4

Klicken Sie auf Ausführen in der zweiten Box (VM Argumente) fügen Sie die -D Eintrag

-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 ...

+1

Auch - in der Run-Konfiguration, gehen Sie auf die Registerkarte "Common" und wählen Sie einen Ort in Ihrem Projekt, um den Lauf zu speichern Konfig. Auf diese Weise können Sie diese Ausführungskonfiguration (xxxx.launch-Datei) einchecken, damit andere Benutzer in Ihrem Team sie wiederverwenden können. –

+0

Das ist das einzige, was mit mir funktioniert, danke –

11

Für eine gegebene Anwendung zu starten, können Sie es tun, wie jim sagt.

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

Window-> 
    Preferences-> 
    Java-> 
     Installed JREs 

Jede JRE hat eine „Standard-VM Argumente“ (was ich glaube vollständig ignoriert, wenn alle VM args gesetzt für eine Laufkonfiguration.)

Sie könnten sogar verschiedene JRE/JDKs mit unterschiedlichen Parametern einrichten und einige Projekte verwenden ein anderes Projekt verwenden ein anderes.

8

Sie können -Djava.library.path=yourPath einfach zu hinzufügen.

6

einfach die * .dll-Dateien auf Ihrem c:/windows

Sie die java.library bekommen.Weg von der Folge Codes: und Sie dann DLL-Dateien unter einem beliebigen Pfad hinzufügen, von Ihnen

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

Dies würde bedeuten, dass jeder, der Ihr Projekt nutzt, diese auch dort ablegen muss. – xtofl

+0

Danke dafür. Die Idee, die DLLs in 'c:/windows' zu setzen, hat mir gezeigt, dass es nur ein Pfadproblem und kein Problem mit den DLLs war. – vegemite4me

20

Mit Ausnahme der Art und Weise in der genehmigten Antwort beschrieben bekommen, gibt es eine andere Art und Weise, wenn Sie einzelne nativen Bibliotheken in Ihrem Projekt haben.

  • im Projekt Eigenschaften-> Java Build-Weg-> Tab „Quelle“ gibt es eine Liste Ihres Quelle-Ordner
  • Für jeden Eintrag gibt es „Nativer Bibliotheksstandorte“, die auch Wege im Arbeitsbereich unterstützt.
  • Dadurch wird Eclipse es zu Ihrem java.library.path hinzufügen.
+2

genial !!!! Danke vielmals!!! Das hat mein Problem gelöst. benötigt, um dylib meinem Projekt und einem Glas hinzuzufügen. Die Einstellung der nativen Bibliothek wurde korrigiert! – ufk

5

Ich denke, es gibt einen weiteren Grund für java.library.path festlegen möchten. Subversion kommt mit vielen Bibliotheken und Eclipse wird diese erst sehen, wenn java.library.path angehängt werden kann. Zum Beispiel bin ich auf OS-X, also die Bibliotheken sind unter \ opt \ subversion \ lib. Es gibt eine Menge von ihnen und ich möchte sie dort behalten, wo sie sind (nicht in ein Standard-lib-Verzeichnis kopieren).

Projekteinstellungen werden dies nicht beheben.

+0

dann, wo muss ich die Parameter java.library.path hinzufügen? – eLRuLL

3

Eine andere Lösung wäre, die 'run configuration' zu öffnen und dann in der Registerkarte 'Environment' das Paar {Path, Value} zu setzen.

Zum Beispiel ein ‚lib‘ im Stammverzeichnis des Projekts liegt hinzufügen

Path <- ${workspace_loc:name_of_the_project}\lib 
+0

Aber vielleicht direkt das VM-Argument '-Djava.library.path' in der Registerkarte * Argumente *? – Campa

5

Keine der Lösungen, die oben für mich (Eclipse-Juno mit JDK 1.7_015) gearbeitet. Java konnte die Bibliotheken nur finden, wenn ich sie aus dem Ordner project_folder/lib in den Ordner project_folder verschoben habe.

+0

Was? Warum sollte das wichtig sein? O_o – Campa

0

Irgendwann bekommen wir Java Build Path nicht direkt durch Rechtsklick auf das Projekt. gehen dann auf Eigenschaften .... Right Click and go to properties

Dann Klicken Sie auf Java-Build-Pfad Properties Scrren

Click on add external jar

Klicken Sie auf der Registerkarte externe Gläser hinzufügen und geben Pfad des Computers Datei, in der u Gläser gespeichert haben.

1

Denken Sie daran, den nativen Bibliotheksordner in PATH einzuschließen.

-1

der einfachste Weg wäre, die Eclipse-IDE selbst zu verwenden. Gehe zum Menü und setze den Build-Pfad. Zeigen Sie auf den JAVA JDK- und den JRE-Dateipfad in Ihrem Verzeichnis. Danach können Sie den Build-Pfad überprüfen, wo kompilierte Dateien gesetzt werden. im bin-Ordner jedoch standardmäßig. Das Beste wäre, Eclipse, damit sich die Build-Pfad zu handhaben und es nur die Lösung ähnlich zu bearbeiten, die oben

0

hier gegeben ist, ist eine andere fix:

Mein Build-System (Gradle) eine erforderliche nativen hinzugefügt library (dll) zum Eclipse-Build-Pfad (Klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Java-Build-Pfad -> Bibliotheken). Wenn das Buildsystem angewiesen wurde, die native DLL-Bibliothek nicht dem Eclipse-Klassenpfad hinzuzufügen, wurde das Problem gelöst.

1

Ich benutze Mac OS X Yosemite und Netbeans 8.02, ich habe den gleichen Fehler und die einfache Lösung, die ich gefunden habe, ist wie oben, das ist nützlich, wenn Sie native Bibliothek in das Projekt aufnehmen müssen.Also 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, wo ich die Lösung gefunden habe, ist hier: java.library.path – What is it and how to use

0

können Sie vm Argument in Ihrer Sonnenfinsternis hinzufügen.

Beispiel: -Djava.ext.dirs = cots_lib

wo cots_lib ist Ihre externe Ordner Bibliothek.

Verwandte Themen