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