# *.dll Datei (Bibliothek) in Eclipse einbinden



## ManInBlack (16. Dez 2008)

Hi Leute,

wie gehts?

Ich stehe gerade vor einem Rätsel, wie ich eine *.dll file in eclipse hinzufügen kann.
Wie jar files hinzugefügt werden, ist mir bekannt. Leider funzt es so nicht
mit dlls.

Ich benötige es deshalb, weil ich JCo (SAP Connector) einsetzte, da wird
1 file + ein 1 dll benötigt. Nur wenn beide vorhanden sind, läuft
die Verbindung.

Übrigens, ich würde gerne das ganz dynamisch halten, d.h. Kopie in 
windows/system32 bringen mich nicht weiter.

Internet & Forum Suche haben mir nicht geholfen.

Deshalb hoff ich, dass mich einer von euch weiterhelfen kann.


Vielen Dank und wenn keiner eine Idee hat, schon mal schöne Weihnachten 

vg
ManInBlack


----------



## The_S (17. Dez 2008)

Wie lädst du die DLL? Normalerweiße sollte die DLL im selben Verzeichnis wie dein Programm liegen.


----------



## HoaX (17. Dez 2008)

ggf musst du den java.library.path auf das passende verzeichnis setzen


----------



## Wolfgang Lenhard (17. Dez 2008)

Lege die dll einfach ins Projekt-Verzeichnis. Sie sollte dann eigentlich gefunden werden. Falls es Probleme gibt, dann lege die jars und die zugehörigen dlls direkt ins Projektverzeichnis. Das hat bei mir bislang immer funktioniert.


----------



## ManInBlack (17. Dez 2008)

Hi,

danke für eure zahlreichen Antworten. Leider hat das bisher noch nicht geklappt.

Ich bekomme folgenden Fehler:

java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [C:\Users\M\workspace\Monitoring\lib\jco\sapjcorfc.dll: Can't find dependent libraries]. java.library.path [C:\Users\M\workspace\Monitoring\lib\jco]

Ich hab bisher folgenden Aufbau:

Unter dem Projekt "Monitoring" im Ordner "lib" sind:
- sapjco.jar
- librfc32.dll
- sapjcorfc.dll

Eigentlich steht ja da, was nicht geht. Also er kann nicht sapjcorfc.dll initialisieren.
Bisher hab ich den Ordner lib über java.library.path eingebunden.

Ich bin total ratlos.

vg


----------



## ManInBlack (17. Dez 2008)

http://searchsap.techtarget.com/generic/0,295582,sid21_gci1096467,00.html

Laut dieser Seite, liegt es an librfc32.dll, die normalerweise in windows/system32 gehört.

Auf der website ist zu lesen: "This file must be found somewhere within the system path."
Das ist jetzt die Frage, ob die file in den system32 ordner muss?


----------



## ManInBlack (17. Dez 2008)

Ich hab eine Lösung gefunden.

Mit System.load("*.dll") war es mir möglich die dll zu laden.

vg


----------



## 2plus3 (18. Dez 2008)

> Laut dieser Seite, liegt es an librfc32.dll, die normalerweise in windows/system32 gehört



also es gibt mehrere möglichkeiten: 
- .dll ins System32 legen 
- .dll in das entsprechende JDK verzeichnis legen
- .dll ins Programmverzeichniss legen
- eine Umgebungsvariable (also in Windows) erstellen mit dem Pfad zur .dll
- oder im Quellcode die .dll laden..  
---------------------------


----------



## ManInBlack (18. Dez 2008)

Hi 2plus3,

danke für deine Tipps.
Da das Tool an mehreren PCs mit unterschiedlichen JRE laufen soll und die Anwender auch nicht vom IT-Fach sind
(das Tool soll ohne jegliche Administration funktionierten, bis vielleicht auf Anpassung der bat file, mit Link auf entsprechender JRE)

kommen für mich deshalb nur 2 Varianten in Frage:

- .dll ins Programmverzeichniss legen 
-  im Quellcode die .dll laden

Das zweitere von beiden habe ich erfolgreich mit der librfc32.dll hinbekommen, allerdings  wird jetzt jco geladen und es kommt eine Windows-Fehlermeldung (also keine Exception in der Konsole):

"Die Anwendung konnte nicht gestartet werden, weil MSVCP71.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben".

Diese MSVCP71.dll Datei befindet sich in dem selben Verzeichnis wie die librfc32.dll und nun habe ich versucht über den selben weg mit System.load("libraries//librfc32.dll") die dll zu laden, aber leider ohne Erfolg.

Hat jemand eine Idee von euch, was ich machen kann?

@2plus3 könntest du mir bitte sagen, wie das über das Programmverzeichniss gehen soll, ich habs einfach mal ins root-verzeichnis gelegt, was muss ich dann noch anpassen, damit die dll geladen werden?

Vielen Dank für eure Hilfe

vg
ManInBlack


----------



## ManInBlack (18. Dez 2008)

Guten Abend,

ich hab jetzt noch ein wenig geforscht, im Prinzip hatte HoaX völlig recht.
Ich wusst nur nicht, wie das über ne batch file hinbekomme.

In der Batch-file gebe ich einfach den Ordner an, dessen files geladen werden sollen:

java  -Djava.library.path=C:\automat\libraries -jar automat.jar

In den Ordner kommen alle dll-files rein, die benötigt werden (auch MSVCP71.dll, usw..)
und JCO läuft *smile*

Schöne Weihnachten+Guten Rutsch

ManInBlack


----------

