Java-Programm findet DLLs nicht!

Dann07

Aktives Mitglied
Guten Tag/Abend!
Ich experimentiere seit einiger seit mit der/die/das JNI (Java Native Interface).. Keine Ahnung ob der, die oder das. 😅
Und ich hab eine DLL erstellt die auf andere DLLs also Bibliotheken zugreift.
Nun versuche ich in meinem Java-Programm meine DLL zu laden mit:

Java:
System.loadLibrary("meineDLL");

Jetzt gibt er mir aber einen Fehler:

Java:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Pfad\zu\meiner\DLL\meineDll.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)

Also er kann die anderen DLLs nicht finden.
Dabei sind die DLLs in den gleichen Ordner wie meine DLL. (Das wäre im Projekt-Ordner)
Ich hab schon alles im Internet durch geguckt. (Vielleicht nicht alles aber das was ich finden konnte. :D)

Vielleicht kann mir ja wer helfen. Freue mich auf jede Antwort.

Paar Informationen die vielleicht helfen (hab gelesen das die Architektur wichtig ist):

Prozessor-Architektur: x64
Betriebssystem-Architektur (Windows 10 Home): 64-Bit
Meine DLL wurde kompiliert für: x64
Die DLLs (Bibliotheken) die ich verwende sind für: x64
Java,JDK ist für: x64
Java-IDE: Eclipse
C++-IDE: Visual Studio 2019 Community

Ich denke das diese Informationen (VIELLEICHT) hilfreich sind.
 

httpdigest

Top Contributor
Die JVM lädt DLLs, die nicht über einen absoluten Pfad angegeben sind, wie also die Dependent Libraries deiner DLL, aus dem java.library.path.
Starte deine JVM mal mit dem `-Djava.library.path=Pfad\zu\meiner\DLL` JVM Argument. Achtung: JVM Argument und NICHT Program argument. Also vor ein eventuelles -jar Argument im Aufruf!
 

Dann07

Aktives Mitglied
Die JVM lädt DLLs, die nicht über einen absoluten Pfad angegeben sind, wie also die Dependent Libraries deiner DLL, aus dem java.library.path.
Starte deine JVM mal mit dem `-Djava.library.path=Pfad\zu\meiner\DLL` JVM Argument. Achtung: JVM Argument und NICHT Program argument. Also vor ein eventuelles -jar Argument im Aufruf!

Danke für die Antwort aber das hab ich schon versucht. Nur hat es nicht geklappt. Trotzdem Danke nochmal!
 

httpdigest

Top Contributor
Hmm... hast du die PATH Umgebungsvariable auch schon um diesen Pfad erweitert? Zum Beispiel in der lokalen cmd Session:
Code:
set PATH=%PATH%;Pfad\zu\meiner\DLL
java ...
 

Dann07

Aktives Mitglied
Ähm... das Programm hängt sich jedes Mal auf. 😂
Aber EIGENTLICH hab ich alle DLLs zusammen die ich benötige. (Selbst die die nicht benötigt werden. 🤣)
 

httpdigest

Top Contributor
Ähm... das Programm hängt sich jedes Mal auf. 😂
Lass es einfach mal ein bisschen laufen. Das Problem habe ich auch, seitdem Visual Studio ganz viel .net und Assembly-Manifest MIST in die Module reingeneriert und er tausende .net Assembly DLLs lazy als Abhängigkeit drin hat... am besten im MSVC Projekt der DLL die Runtime statisch linken und sämtliche Optionen, die nur nach "Manifest" klingen, ausschalten.
 

httpdigest

Top Contributor
Und was sagt letztlich Dependency Walker? Du musst dem etwas Zeit geben. :)
Ist vielleicht auch eine transitive Abhängigkeit, also eine Abhängigkeit einer Abhängigkeit.
 

Dann07

Aktives Mitglied
Ich hab mal geguckt. Die DLL benötigt: KERNEL32.DLL, VCRUNTIME140D.DLL, UCRTBASED.DLL, OLE32.DLL, KERNELBASE.DLL.
Aber die sollten doch kein Problem darstellen oder nicht?
 

httpdigest

Top Contributor
VCRUNTIME140D.DLL könnte ein Problem sein. Das ist die Debug-Variante der Runtime Library.
Kannst ja mal in C:\Windows\System32\ oder so gucken, ob da alles da ist. Bezweifle ich aber. Diese DLL ist bestimmt nur in der MSVC Installation irgendwo hinterlegt und wird dynamisch dazugelinkt, wenn du ein Prozess debuggst.
Bau mal im Release-Modus und, wie gesagt, linke nicht per Multithreaded DLL, sondern per "Multithreaded", also linke die Runtime statisch.
 

Dann07

Aktives Mitglied
Also Release-Modus kann ich versuchen aber alles andere dahinter musst du mir erklären. Ich bin nicht wirklich helle was das angeht. 😂
 
B

BestGoalkeeper

Gast
Lass dir mal mit java -XshowSettings:properties -version den shared library search path ausgeben:

Ansonsten halte dich an die Anleitung von @httpdigest was den Debug-Modus betrifft.
 

Dann07

Aktives Mitglied
Ich hab endlich mein Problem behoben! Und das ist die Lösung:

Ich hatte DLLs genommen die nicht für meine Windows Version waren. Deshalb konnte Java die wahrscheinlich nicht laden.
Und ich muss im Java-Programm die DLLs die ich benötige laden. (Also nicht nur meine DLL).

Das sieht im Programm so aus:

Java:
System.loadLibrary("DLL1");
System.loadLibrary("DLL2");
System.loadLibrary("DLL3");
System.loadLibrary("MeineDLL");

Ich danke euch trotzdem das ihr mir geholfen habt. ;):)
 

mihe7

Top Contributor
Ich experimentiere seit einiger seit mit der/die/das JNI (Java Native Interface).. Keine Ahnung ob der, die oder das. 😅
Off Topic, aber da ich durchaus Gefallen an der Auseinandersetzung mit Sprachen, gerne auch der eigenen, finde...

Verkürzen wir den Satz mal auf das Wesentliche: "Ich experimentiere mit JNI." Würde schon reichen :) Aber es soll ja ein Artikel rein.

"Ich experimentiere." wäre ein vollständiger Satz, bestehend aus Subjekt ("Ich") und Prädikat ("experimentiere"). Das Anhängsel "mit JNI" ist eine Ergänzung.

Aufgrund der Präposition "mit" kommen hier prinzipiell die adverbiale Ergänzung und das Präpositionalobjekt in Frage. Da hier aber kein Umstand beschrieben wird, bleibt nur das Objekt übrig. Lässt sich auch daran erkennen, dass die Frage nach JNI nicht ohne "mit" auskommt: "Womit experimentiere ich?" oder auch "Mit (wem oder) was experimentiere ich?"

Die Frage nach der adverbialen Ergänzung würde dagegen ohne die Präposition auskommen, z. B. würde beim Satz "Ich experimentiere mit größter Sorgfalt." die Frage "Wie experimentiere ich?" (ohne, dass dort "mit" vorkommen würde) gestellt werden können, die "mit größter Sorgfalt" beantwortet würde.

Kommen wir zum Artikel. Das Wort "JNI" ist keinesfalls maskulin. Gehen wir von Java Native Interface aus, wäre "Interface" ausschlaggebend. Interface ist neutral ("das Interface"). Da das Objekt im Dativ steht, lautet der korrekte Satz folglich "Ich experimentiere mit dem JNI."

Interessant ist, dass das bei Abkürzungen durchaus auch mal ein anderer Genus unterstellt wird. So wird "API" in der Regel als feminines Wort ("die API") betrachtet, obwohl es in der Langform ganz klar neutral wäre ("das Application Programming Interface"). Geht man von "die API" aus, würde der Satz "Ich experimentiere mit der API." lauten. Warum "API" als feminines Wort gesehen wird, würde mich allerdings auch mal interessieren. Das wird vermutlich einfach ein Sprachgebrauch sein, der sich durchgesetzt hat.

Anderes Beispiel hierfür wäre "BIC". Da liest man auch oft beide Varianten, also "der BIC" und "die BIC" (auch bei Banken). Da "BIC" für "Bank Identifier Code" steht, müsste es korrekt "der BIC" lauten. Manchmal liest man auch Konstrukte wie "der BIC-Code", was dann zum völligen Quatsch ausartet (wie auch bei "PIN-Nummer" oder "TAN-Nummer").
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F Java-Programm lizensieren Allgemeine Java-Themen 21
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
itwestnet Mein Java-Programm läuft nicht in China Allgemeine Java-Themen 4
B SMS von Vodafone Mobile Connest mit JAVA-Programm lesen Allgemeine Java-Themen 0
J Java Auf anderes Programm warten Allgemeine Java-Themen 9
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
Developer_X OpenStreetMap in Java Programm einbinden Allgemeine Java-Themen 10
Developer_X Java Programm Beenden Allgemeine Java-Themen 3
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
S Java-Programm verbraucht zu viel RAM Allgemeine Java-Themen 8
S Java-Programm für "Börsenanalyse" schreiben Allgemeine Java-Themen 4
U Eclipse Java Programm beschädigt .tar.gz dateien beim Entpacken Allgemeine Java-Themen 7
M Problem mit (etwas komplizierterem) Java Programm Allgemeine Java-Themen 14
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
J Java Programm - ausführbare Jar Datei erstellen Allgemeine Java-Themen 2
C Programm von C++ auf Java umschreiben Allgemeine Java-Themen 27
J Java-Programm Allgemeine Java-Themen 13
I Java-Programm: Zahlen in Worte Allgemeine Java-Themen 22
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
Java-Insel Wie kann ich ein Java-Programm zum "automatischen Öffner" einer Dateisorte machen? Allgemeine Java-Themen 13
O Java-Programm lastet CPU aus Allgemeine Java-Themen 8
C Registration im Web mit Java-Programm durchführen Allgemeine Java-Themen 6
R Java Programm beenden mit SIGTERM Allgemeine Java-Themen 9
T Java Programm als Batch Befehl Allgemeine Java-Themen 6
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
H Java-Programm nur mit SDK ausführbar? Allgemeine Java-Themen 5
C Java Programm über SSH starten Allgemeine Java-Themen 16
S jar Datei mit Java Programm öffnen Allgemeine Java-Themen 3
J Java-Programm im Hintergrund Allgemeine Java-Themen 3
Jackii Java Programm aus anderen Java Programm starten Allgemeine Java-Themen 20
Madlip Erste Schritte Java speichert Daten im Programm?!? Allgemeine Java-Themen 9
G Java Programm aus Java Programm starten Allgemeine Java-Themen 6
M Wie Java Programm mit grafischen Oberfläche versehen Allgemeine Java-Themen 2
JAVATUX Java Programm mit ATI Stream Unterstützung Allgemeine Java-Themen 3
J Java programm lässt sich in win7 nach linux install nicht mehr ausführen Allgemeine Java-Themen 18
C Mit Java in einem anderes Programm eingreifen Allgemeine Java-Themen 21
S C++/C KeyListener zusammen mit Java Programm Allgemeine Java-Themen 4
S Java Programm -System Neustart überleben? Allgemeine Java-Themen 3
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
T Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 13
J Eclipse Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 14
F Anderes Java-Programm aufrufen Allgemeine Java-Themen 2
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
M Java Programm als Dienst starten... Allgemeine Java-Themen 4
A Installation von Java ME Programm auf Sony Ericsson Handy Allgemeine Java-Themen 3
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
J Installer für Java-Programm Allgemeine Java-Themen 5
N Programm starter in Java? Allgemeine Java-Themen 12
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
T Mit JNI von C++ auf ein laufendes Java-Programm zugreifen Allgemeine Java-Themen 10
H aus Java-Programm Dateien öffnen Allgemeine Java-Themen 5
Z Java Programm - xxxxx auf der Konsole ausgeben Allgemeine Java-Themen 4
T cpp Programm via jna in java nutzen Allgemeine Java-Themen 3
M Variablen an Java-Programm übergeben Allgemeine Java-Themen 3
G Java Programm mit Freischalt code entwickeln Allgemeine Java-Themen 30
clupus Meldung an laufendes Java-Programm schicken - Wie? Allgemeine Java-Themen 6
E Zweites Java Programm sichtbar starten Allgemeine Java-Themen 4
T Mit Java Programm auf Firefox zugreifen Allgemeine Java-Themen 2
Airwolf89 *.exe mit java programm ausführen Allgemeine Java-Themen 1
V Java-Programm automatisch starten Allgemeine Java-Themen 2
MQue aktuelle Wetterdaten für Java- Programm Allgemeine Java-Themen 9
O Programm mittels Java installieren Allgemeine Java-Themen 15
K Java Chat Programm Allgemeine Java-Themen 2
M Java programm über cmd öffnen Allgemeine Java-Themen 2
Schandro Datei öffnen mit... Bestimmten Dateityp mit einen Java-Programm öffnen lassen Allgemeine Java-Themen 5
N Per Java-Programm onClick ausführen Allgemeine Java-Themen 5
D mit Java das Programm "Editor" öffnen Allgemeine Java-Themen 7
M Wie Java-Programm über Batch-file starten? Allgemeine Java-Themen 8
G Logikhindernisse im Java- Programm Allgemeine Java-Themen 6
V Java-Programm nur "mit halber Kraft" arbeiten lass Allgemeine Java-Themen 11
_SeiA_ Hilfe Kleines Java Programm schreiben. Summen. Allgemeine Java-Themen 3
G Java- Programm mit bat- Datei starten Allgemeine Java-Themen 16
V Java-Programm richtig neustarten? Allgemeine Java-Themen 9
G JDBC Programm und niedrige Java-Versionen Allgemeine Java-Themen 14
oltoko PID für das laufende Java Programm herausfinden Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben