Wie wird eine .dll-Datei in Java konfiguriert?

8

Ich verwende Jacob JAR-Datei in meiner Java-Anwendung.

Diese Jacob-JAR-Datei wird mit einer DLL-Datei geliefert. Ich habe Jacob-Jar-Datei zu meinem Klassenpfad hinzugefügt. Aber wenn ich meine Anwendung ausführe, tritt ein Laufzeitfehler als

auf %Vor%

Wie kann ich diese .dll-Datei laden?

Bearbeitet: ================================================ ===================================

Ich hatte die "Pfad" -Umgebung für das Verzeichnis, das meine .dll-Datei enthält, festgelegt und lade diese .dll-Datei wie folgt

%Vor%

aber der folgende Fehler ist aufgetreten

%Vor%     
Yatendra Goel 17.01.2010, 18:08
quelle

6 Antworten

10

Die 'jacob-1.15-M3-x86.dll' muss an einem Ort sein, an dem Ihr Betriebssystem sie finden kann. Sie haben hier einige Möglichkeiten:

  • Sie können die .dll-Datei in das Verzeichnis einfügen, von dem aus Sie Ihre Anwendung gestartet haben. Wenn Sie ein Batch-Skript haben, um Ihre Anwendung zu starten, wäre es dieses Verzeichnis. Wenn Sie auf einer Art Anwendungsserver starten, ist dies normalerweise das Verzeichnis 'bin'.

  • Sie können die .dll-Datei irgendwo in der Umgebungsvariablen% PATH% platzieren. Ich kann einfacher sein, Ihre PATH-Umgebungsvariable zu aktualisieren, um das Verzeichnis einzuschließen, das Ihre DLL-Datei enthält.

  • Eine weitere Möglichkeit besteht darin, Ihre DLL in das Verzeichnis% SystemRoot% \ system32 zu speichern. Normalerweise ist dies "C: \ Windows \ system32". Diese Option wird normalerweise nicht empfohlen, es sei denn, es handelt sich um eine gemeinsam genutzte Bibliothek wie die MSCVRT-Laufzeitumgebung.

Ein anderes mögliches Problem, das Sie haben könnten. Wenn die DLL als 32-Bit kompiliert wird, müssen Sie in der 32-Bit-Java-Laufzeit ausgeführt werden. Wenn es sich um eine 64-Bit-DLL handelt, muss sie in einer 64-Bit-JRE ausgeführt werden.

    
Chris Dail 17.01.2010 18:20
quelle
5

Ah, das ist kein Übersetzungsfehler, sondern ein Laufzeitfehler.

Ich nehme an, dass Ihre DLL auf der PATH sein muss. Nicht CLASSPATH , aber PATH , da Windows nach DLLs sucht. Versuchen Sie entweder Ihren PATH zu erweitern, um den Speicherort Ihrer DLL einzuschließen, oder tun Sie, was viele andere tun: Kopieren Sie die DLL in \Winnt\System\System32 oder wie auch immer das Systemverzeichnis auf Ihrer Box aufgerufen wird. Wo auch immer alle anderen DLLs sind.

Aktualisieren

Die Fehlermeldung, die Sie posten, zeigt zum Glück das genaue Problem auf. Sie können es lösen, indem Sie das Verzeichnis mit Ihrer DLL in java.library.path setzen. Dieser Sun-Forum-Thread zeigt ein schönes Beispiel: Ссылка

Eigentlich ist das viel weniger sauber als es sein sollte; Dies scheint einer der "schattigeren" Bereiche in Java zu sein. Der Thread wandert viel herum, ich rate dir, den ganzen Weg durchzulesen, um ein paar Probleme und Lösungen zu sehen. Ich denke, dass Sie mit ein wenig Versuch und Irrtum Erfolg haben werden.

    
Carl Smotricz 17.01.2010 18:12
quelle
3

Andere Optionen:

  • Setzen Sie die Eigenschaft java.library.path auf das Verzeichnis, das die DLL enthält. Beispiel: java -Djava.library.path="Pfad / zu / Verzeichnis / containing / the / dll" -jar appli.jar
  • Laden Sie die DLL im Code explizit mit System.load.
barjak 17.01.2010 19:43
quelle
1

Sie müssen LD_LIBRARY_PATH setzen. Dies gibt Ihnen die richtigen Schritte, die Sie befolgen sollten.

    
duffymo 17.01.2010 18:23
quelle
1

Wenn Sie System.loadLibrary() verwenden, fügen Sie am Ende nicht .dll ein .

Wenn Sie java.library.path nicht auf den Ordner mit der DLL setzen, sollte sich die DLL in dem Verzeichnis befinden, in dem Sie Ihre Java-Anwendung starten.

    
Andrew Landsverk 01.11.2012 16:11
quelle
0

Ich hatte das gleiche Problem.

Ich sehe, dass die Frage nicht "beantwortet" wird, also hat vielleicht keine der oben genannten Optionen funktioniert.

Eine meiner letzten Hypothesen war, dass die Jacob.dll ihre Abhängigkeit fehlt.

Was ich getan habe, war, abhängig zu bekommen und zu überprüfen, ob alle von Jacob verwendeten Abhängigkeiten geladen sind. Natürlich funktioniert das für Windows.

Prost!

    
karla 23.08.2011 13:09
quelle

Tags und Links