0

我学校的编程俱乐部正在启动一个辅导计划,我已经构建了一个 Java 小程序,学生可以使用它来请求会话。小程序与一个数据库进行通信,该数据库具有一个存储导师可用性的表,并向用户显示可用时间。

首先:出于安全原因,我知道让小程序直接与数据库通信是个坏主意。话虽这么说,这是一个相当低风险的情况(数据库中没有存储任何“敏感”内容),而且这个解决方案只是暂时的(我们目前没有能够运行 tomcat 的服务器,所以一切都需要完成客户端)。

小程序 GUI 正确加载,但java.security.AccessControlException ("java.lang.RuntimePermission" "setContextClassLoader")在初始化尝试访问数据库的类时抛出异常,并且没有加载数据。我怎么解决这个问题?

编辑:我已经更改了我的代码,以便数据库通信发生在与 GUI 相同的线程上。现在我得到了这个例外:

Exception in thread "Thread-46" java.lang.NoClassDefFoundError: Could not initialize class com.mysql.jdbc.StringUtils
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:298)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at helpsessions.DBHandler.run(DBHandler.java:53)
at java.lang.Thread.run(Unknown Source)
4

1 回答 1

0

默认情况下,Applet 具有非常有限的安全模型,为了扩展 Applet 可用的功能,您需要对 Applet 进行签名,然后使用您需要的扩展权限编写更新的安全策略。

您的第二个问题 - 找不到类 - 是因为驱动程序没有随小程序一起分发。

我参考 Java 1.1 发现了这一点。

如果您使用的是小程序,则必须将这些 JAR 和类文件放在小程序的代码库目录和/或存档位置

I'm not sure how relevant is to the latest versions of Java, but I would suggest that is your best option to make the driver Jar available to the applet.

于 2013-03-17T21:58:15.877 回答