编写了一个applet,编译后放入一个html页面中运行。其中会去链接数据库,有句
Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");一直会报找不到这个driver,已经class_path中加入这个driver所在的jar--rt.jar的路径了为什么还会报错呢?麻烦指点下,谢谢在线等候~ java.lang.ClassNotFoundException: Sun.jdbc.odbc.JdbcOdbcDriver
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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.lol.tst.test1.openConnection(test1.java:96)
at com.lol.tst.test1.init(test1.java:82)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: D:\Pro\classes\Sun\jdbc\odbc\JdbcOdbcDriver.class (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at sun.applet.AppletClassLoader.getBytes(Unknown Source)
at sun.applet.AppletClassLoader.access$100(Unknown Source)
at sun.applet.AppletClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 11 more
java.lang.NullPointerException
at com.lol.tst.test1.execSQLCommand(test1.java:117)
at com.lol.tst.test1.init(test1.java:83)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at com.lol.tst.test1.closeConnection(test1.java:108)
at com.lol.tst.test1.init(test1.java:84)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver");一直会报找不到这个driver,已经class_path中加入这个driver所在的jar--rt.jar的路径了为什么还会报错呢?麻烦指点下,谢谢在线等候~ java.lang.ClassNotFoundException: Sun.jdbc.odbc.JdbcOdbcDriver
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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.lol.tst.test1.openConnection(test1.java:96)
at com.lol.tst.test1.init(test1.java:82)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: D:\Pro\classes\Sun\jdbc\odbc\JdbcOdbcDriver.class (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at sun.applet.AppletClassLoader.getBytes(Unknown Source)
at sun.applet.AppletClassLoader.access$100(Unknown Source)
at sun.applet.AppletClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 11 more
java.lang.NullPointerException
at com.lol.tst.test1.execSQLCommand(test1.java:117)
at com.lol.tst.test1.init(test1.java:83)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at com.lol.tst.test1.closeConnection(test1.java:108)
at com.lol.tst.test1.init(test1.java:84)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
建议在Applet包中MANIFEST.MF里面用Class-Path来调用其它包
ava.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
看来由于ODBC是原生代码,APPLET对于调用原生代码有安全限制。应该如何解决呢,请教五斗米
MANIFEST.MF中调用其他包也很简单,在MANIFEST.MF文件中写上Class-Path: xxx.jar就可以了
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.checkConnect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnectionSecurityManager.checkConnect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.lol.tst.test1.openConnection(test1.java:101)
at com.lol.tst.test1.init(test1.java:81)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)象这个东西也是因为安全问题,要做电子签名么?照理说引用标准的JDBC来做的话,应该是可以正常连接的吧,还是说因为是APPLET中连接的关系呢
http://www.yesky.com/20010919/197664_1.shtml
如果这样子的话,发布在网上,岂不是不行了,还得看的人自己先做部署APPLET连接SQLSERVER还有什么简洁点的方法么?求解~~~~
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>New Page 1</title> </head> <body>
<applet
codebase = "."
code = "Test.class"
name = "Test"
archive = "Test.jar"
width = "400"
height = "300"
hspace = "0"
vspace = "0"
align = "middle"
>
</applet>
用Applet直接连数据库死路一条,即使连通了,没有任何实际意义。
客户端怎么可能装什么数据库驱动?????
解决方法一般采用Applet/Servlet/DBDriver/DB。所有的数据库驱动装在服务器端。
当然,如果采用Application,可以将驱动程序一起打包。