HTML中嵌入jar的Java小程序的安全问题

HTML中嵌入jar的Java小程序的安全问题,java,applet,japplet,Java,Applet,Japplet,我将小程序嵌入到HTML页面中。小程序还使用MySQL jar文件 没有MySQL jar文件,它就可以正常工作。从本地Web服务器或托管Web服务器执行时,会出现以下错误: Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:286) at java

我将小程序嵌入到HTML页面中。小程序还使用MySQL jar文件

没有MySQL jar文件,它就可以正常工作。从本地Web服务器或托管Web服务器执行时,会出现以下错误:

Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:286)
at java.sql.DriverManager.getConnection(Unknown Source)
.........
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "file.encoding" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
我的文件列表:

/appletTest.html
/mysql-connector-java-5.1.18-bin.jar
/applet/testApplet.class
testApplet.class:

package applet;

import java.applet.Applet;
import java.awt.Graphics;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HelloWorldApplet extends Applet {

@Override
public void paint(Graphics g) {
    g.drawString("Hello World", 25, 50);

    Connection con = null;
    Statement st = null;
    ResultSet rs = null;

    String url = "jdbc:mysql://localhost:3306/testdb";

    try {
        con = DriverManager.getConnection(url, "root", ""); // <= here fails
        st = con.createStatement();
        rs = st.executeQuery("SELECT VERSION()");

        if (rs.next()) {
            g.drawString(rs.getString(1), 25, 50);
        }

    } catch (SQLException ex) {
        System.out.println(ex);
    } 
  }
}
packageapplet;
导入java.applet.applet;
导入java.awt.Graphics;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
公共类HelloWorldApplet扩展小程序{
@凌驾
公共空间涂料(图g){
g、 抽绳(“你好,世界”,25,50);
连接con=null;
语句st=null;
结果集rs=null;
String url=“jdbc:mysql://localhost:3306/testdb";
试一试{
con=DriverManager.getConnection(url,“根目录”,“根目录”);//

测试时,请确保您与Web服务器位于同一域上。
file:///.../appletTest.html
即使您正在访问本地主机,也无法工作

那一行:
stringurl=“jdbc:mysql://localhost:3306/testdb“;
将需要更改为Web服务器的地址

[编辑] 每次调用
paint()
时打开一个新连接不是很愚蠢吗

[编辑]
我更仔细地阅读了你的帖子。问题是你无法访问jar文件。最简单的方法是将驱动程序打包到与小程序相同的jar中。

@JeanP在这种情况下,我不认为url很重要,因为它在加载之前失败,但感谢你指出它。我也尝试过更改它,但顺便说一句,这也不起作用@JeanP PS:paint()方法和所有编码只是一个例子;)@JeanP我已经将库和类打包在同一个jar中。删除了所有文件。我现在有两个文件“applet/test.jar”和“appletTest.html”。它仍然给出相同的错误。我当前的html代码
<html>
  <head>
  <title>Applet Test</title>
  </head>
   <body>
      <applet code="applet.testApplet.class" width="500" height="300" archive="mysql-connector-java-5.1.18-bin.jar">
      </applet>
   </body>
</html>