编写了一个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)

解决方案 »

  1.   

    是不是Sun字母大小写的问题?
    建议在Applet包中MANIFEST.MF里面用Class-Path来调用其它包
      

  2.   

    应该不是字母的问题。MANIFEST.MF中调用其他包是如何运作的啊?能否详细点说下呢,没有这样子使用过,谢谢拉
      

  3.   

    多谢五斗米,,确实大小写有问题。不过改过后发现有安全的限制
    ava.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
    看来由于ODBC是原生代码,APPLET对于调用原生代码有安全限制。应该如何解决呢,请教五斗米
      

  4.   

    安全问题一般需要做电子签名,你搜索一下,这方面的文章多的很
    MANIFEST.MF中调用其他包也很简单,在MANIFEST.MF文件中写上Class-Path: xxx.jar就可以了
      

  5.   

    java.security.AccessControlException: access denied (java.net.SocketPermission KESWEBB:1433 connect,resolve)
    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中连接的关系呢
      

  6.   

    查到一篇做电子签名的,感觉很麻烦,而且客户端还需要做部署:
    http://www.yesky.com/20010919/197664_1.shtml
    如果这样子的话,发布在网上,岂不是不行了,还得看的人自己先做部署APPLET连接SQLSERVER还有什么简洁点的方法么?求解~~~~
      

  7.   

    给你转一篇别人写的文章,不难:数字签名  用Applet写的java小程序如果没有经过签名,那么访问客户端程序下载后会受到安全限制;怎样对java小程序签名受到很多人的关注,网上也有这些方面可供参考的文档,但都不是完整,在这里我给出一份可具体操作的文档,希望能给大家一些帮助。  场景:test.jar:内含待签名的java小程序  结果:签名后,客户端能自动下载java小程序,且java小程序能访问客户端的任何资源  步骤:  (1)将java小程序打包  jar cvf test.jar test.class  (2)生成名为chinani.store的密钥库,别名为chinani  keytool -genkey -keystore chinani.store -alias chinani  密码:123456 (根据需要自己输入)  以下根据需要输入,最后确认:y  (3)导出chinani.cer数字证书  keytool -export -keystore chinani.store -alias chinani -file chinani.cer  密码:123456 (根据需要自己输入)  (4)对test.jar文件进行签名  jarsigner -keystore chinani.store  test.jar chinani  密码:123456 (根据需要自己输入)  最后写一个html文件,运行此文件即可自动下载安装运行java小程序
      <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>
      

  8.   

    这个也是要使用什么TOOL的吧,好像不认这个命令呢对了,还有什么简单些的方法么?是否是一定要使用签名呢?因为只是局域网内的applet应用。
      

  9.   

    keytool.exe在你Java JDK的bin目录下,你可能没在Path下添加该目录,所以觉得不认这个命令。
      

  10.   

    哦,如果象做这种签名的话,看网上都说要在${JRE_HOME}/lib/security/java.security中进行修改,每个访问的客户端都要做修正。这个样子,安全性是得到保证了,但是似乎部署的力度很大,很费力。BTW,有什么好一点的GUI的开发教程么,介绍下?之前没做过,贸贸然开始写,觉得没什么头绪,什么都不会。
      

  11.   

    bin下面似乎只有packager.exe,javaws.exe,beanreg.dll啊难道我的JDK有问题么?我的是jdk1.5.0_11
      

  12.   

    不要问这种问题了吧,这是我第n次看到这类问题了。
    用Applet直接连数据库死路一条,即使连通了,没有任何实际意义。
    客户端怎么可能装什么数据库驱动?????
    解决方法一般采用Applet/Servlet/DBDriver/DB。所有的数据库驱动装在服务器端。
    当然,如果采用Application,可以将驱动程序一起打包。