# dll's werden nicht gefunden! UnsatisfiedLinkError



## g-a-s-t (8. März 2008)

Hallo zusammen,

ich habe auf meinem Rechner ein Java-Programm geschrieben, das auf diesem (unter Eclipse) auch wunderbar läuft (Windows XP). Doch wenn ich alle Dateien auf einen anderen PC übertrage um es dort mit Eclipse weiter zu verändern oder was auch immer, dann startet es nicht. 
Es erscheint dann folgendes:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\vtkCommonJava.dll: Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren
	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)
	at vtk.vtkPanel.<clinit>(vtkPanel.java:26)
	at Projekt.GUI.<init>(GUI.java:86)
	at start.Programmstart.main(Programmstart.java:46)

Ich habe die benötigte dll im obigen Ordner gespeichert, dennoch erscheint dieser Fehler. Kann mir jemand helfen, was ich da nun noch machen kann? Bzw. was ist mit Anwendungskonfiguration gemeint?
Was ist mit "Anwendung neu installieren" gemeint, welche Anwendung? 

Gruss


----------



## zeja (8. März 2008)

Hast du die Konfiguration zum Starten deines Programms auch mit übernommen und ist da ein library.path bei den VM-Options angegeben?


----------



## J-Master (9. März 2008)

g-a-s-t hat gesagt.:


> Hallo zusammen,
> 
> ich habe auf meinem Rechner ein Java-Programm geschrieben, das auf diesem (unter Eclipse) auch wunderbar läuft (Windows XP). Doch wenn ich alle Dateien auf einen anderen PC übertrage um es dort mit Eclipse weiter zu verändern oder was auch immer, dann startet es nicht.
> Es erscheint dann folgendes:
> ...



Es gibt verschiedene Ursachen:
1. vtkCommonJava.dll benötigt weitere DLLs beim Laden. Das kann dir Java leider nicht sagen. VTK = VisualToolKit ? Evtl. muss dies erst auf dem Zielrechner installiert werden oder mehrere DLLS zusätzlich kopiert weren.
2. Passt der Pfad zur DLL ? Hast du wirklich per Hand eine DLL nach C:\WINDOWS\system32 kopiert ?
3. Du kannst beim Laden einer DLL einen absoluten Pfad angeben - siehe unten:

JNI lässt zwei Arten beim Laden von DLLs zu
- System.loadLibrary: Laden aud dem Path (-Djava.library.path Parameter bei JVM bzw. PATH in Windows)
- System.load: Absoluter Pfad möglich
Probier doch mal:
System.load("c:/path/to/dll/vtkCommonJava.dll");


----------



## g-a-s-t (9. März 2008)

Erstmal danke für eure Hinweise!



J-Master hat gesagt.:


> Es gibt verschiedene Ursachen:
> 1. vtkCommonJava.dll benötigt weitere DLLs beim Laden. Das kann dir Java leider nicht sagen. VTK = VisualToolKit ? Evtl. muss dies erst auf dem Zielrechner installiert werden oder mehrere DLLS zusätzlich kopiert weren.
> 2. Passt der Pfad zur DLL ? Hast du wirklich per Hand eine DLL nach C:\WINDOWS\system32 kopiert ?
> 3. Du kannst beim Laden einer DLL einen absoluten Pfad angeben - siehe unten: ...


zu 1.) VTK=Visualization ToolKit. Auf Zielrechner installiert, aber ohne Erfolg.
zu 2.) Pfad ist korrekt. Alle benötigten DLL's liegen dort. 
zu 3.) Im Eclipse habe ich dies "-Djava.library.path=.;C:\WINDOWS\system32" als VM-Argument übergeben und das Programm erneut gestartet. Aber gleicher Fehler...

Was genau ist mit der Konfiguration gemeint? Was oder wie kann ich wo was einstellen? Kann mich nicht daran erinnern irgendwelche Einstellungen auf dem Rechner gemacht zu haben auf dem es läuft.


----------



## J-Master (10. März 2008)

Vergleich doch mal die Pfade auf beiden Maschinen (echo %PATH%). Falls hier nichts auffällig ist, benutzte System.load("absoluter Pfad/lib.dll"), um die dll zu laden.


----------



## zeja (10. März 2008)

Ansonsten benutz mal das Tool http://www.dependencywalker.com/ und analysiere damit deine vtkCommonJava.dll ob diese noch andere Abhängigkeiten hat, die nicht gefunden werden können.


----------

