Здравствуйте! Помогите пожалуйста!!! У меня такая задача: У меня есть библиотека (.dll), сделаная через JNI, которая взаимодействует с USB-портом. Так вот, мне надо загрузить её через web-страницу, т.е. через java-апплет.
код, который работает через консоль:
| Код | import java.io.*; import java.lang.*; public class a3 { static { System.loadLibrary("cproga"); } public native int enumdev(); public native int checkPass(String pass);
public static void main(String[] args) throws IOException { a3 dev = new a3(); dev.enumdev();
System.out.print("Enter You Password : "); BufferedReader bReader = new BufferedReader (new InputStreamReader(System.in)); String pin = bReader.readLine();
dev.checkPass(pin); }
}
|
пытался реализовать в ява аплете следуя инструкциям http://www.xs4all.nl/~vkessels/articles/jnijarapplet.html
файл a3.java:
| Код | import java.net.URL; import java.io.InputStream; import java.io.File; import java.io.FileOutputStream; import java.io.*; import java.lang.*;
public class a3 { /** The JNI method to the DLL */ public native int enumdev(); public native int checkPass(String pass);
/** Load the library from the JAR file */ static { try { /* Get DLL from JAR file */ URL res = a3.class.getResource("cproga.dll"); InputStream is = res.openStream();
/* Define the destination file */ File dll = File.createTempFile("cproga",".dll");
/* Open the destination file */ FileOutputStream fos = new FileOutputStream(dll);
/* Copy the DLL fro the JAR to the filesystem */ byte[] array = new byte[1024]; for(int i=is.read(array); i!=-1; i=is.read(array) ) { fos.write(array,0,i); }
/* Close all streams */ fos.close(); is.close();
/* Load the DLL from the filesystem */ System.load(dll.getAbsolutePath()); } catch(Throwable e) { e.printStackTrace(); } }
/** Command-line main for testing */ public static void main(String[] args) { a3 dev = new a3(); dev.enumdev(); } }
|
файл a3Applet.java:
| Код | import javax.swing.JApplet; import javax.swing.JLabel;
public class a3Applet extends JApplet { public void init() { a3 dev = new a3(); dev.enumdev();
getContentPane().add(new JLabel("Hello Applet")); } } |
файл a3.html:
| Код | <html> <head> <title>Hello Applet</title> </head> <body> <!--"CONVERTED_APPLET"--> <!-- HTML CONVERTER --> <OBJECT classid = "clsid:CAFEEFAC-0014-0002-0006-ABCDEFFEDCBA" codebase = "http://java.sun.com/update/1.4.2/jinstall-1_4_2_06-windows-i586.cab#Version=1,4,2,60" WIDTH = "100" HEIGHT = "50" > <PARAM NAME = CODE VALUE = "a3" > <PARAM NAME = ARCHIVE VALUE = "a3.jar" > <PARAM NAME = "type" VALUE = "application/x-java-applet;jpi-version=1.4.2_06"> <PARAM NAME = "scriptable" VALUE = "false">
<COMMENT> <EMBED type = "application/x-java-applet;jpi-version=1.4.2_06" \ CODE = "a3" \ ARCHIVE = "a3.jar" \ WIDTH = "100" \ HEIGHT = "50" \ scriptable = false \ pluginspage = "http://java.sun.com/products/plugin/index.html#download"> <NOEMBED> </NOEMBED> </EMBED> </COMMENT> </OBJECT>
<!-- <APPLET CODE = "a3" ARCHIVE = "a3.jar" WIDTH = "100" HEIGHT = "50">
</APPLET> -->
<!--"END_CONVERTED_APPLET"-->
</body> </html> |
файлы .jar и .keystore созданы, всё подписано, единственное что не знаю, что насчет java.policy...
Выдаёт ошибку такого рода: Could not instantiate
java.lang.ClassCastException: a3 cannot be cast to java.applet.Applet 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)
ПОМОГИТЕ, ПОЖАЛУЙСТА !!!
|