ich habe ein Java-Applet geschrieben, dass mittels JNI und einer eigenen *.dll mit einem USB-Gerät kommuniziert.
Als Entwicklungsumgebung nutze ich Eclipse. Wenn ich die benötigte *.dll in den Eclipse-Projekt-Einstellungen als externe Lib mit angebe, funktioniert das Applet einwandfrei, sofern es aus Eclipse heraus gestartet wird.
Das ganze Projekt besteht aus vier Dateien:
id_plug.jar <- Mein Applet als Jar gepackt (inkl. dem USB-Treiber und der Schnittstelle zwischen USB-Treiber und JNI)
jd2xx.jar <- Der Wrapper um den USB-Treiber herum, wurde nicht von mir entwickelt
JD2XX.dll <- Die *.dll für den Wrapper um JNI nutzen zu können, wurde nicht von mir entwickelt
ftd2xx.dll <- Der eigentliche USB-Treiber
So. Soweit so gut. Wie kann ich es nun anstellen, dass ich das Applet aus einem beliebigen Browser aufrufen kann?
Leider Startet das Applet nicht, der Fehleroutput auf der Konsole sieht wie folgt aus:
java.lang.NoClassDefFoundError: ID_PLUG (wrong name: ID_PLUG/ID_PLUG)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Wie muss ich vorgehen, damit ich das Applet lauffähig bekomme?
nun bekomme ich eine Fehlermeldung, die ich schon erwartet habe:
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.jd2xx)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkLink(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at jd2xx.JD2XX.<clinit>(JD2XX.java:587)
... 3 more
java.lang.NoClassDefFoundError
at ID_PLUG.ID_PLUG.init(ID_PLUG.java:52)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Er scheint also Probleme mit den Zugriffsrechten zu haben. Ich habe die beiden jars jedoch bereits signiert. Leider kommt der fehler trotzdem