当前位置: 首页 > 面试题库 >

jdbc applet的NoClassDefFoundError

郎雪风
2023-03-14
问题内容

我使用Eclipse创建了一个applet:

package gui;
public class MyApplet extends JApplet {

此小程序需要两个外部jar:proj.jar和firebirdsql-full.jar(jdbc)

因此,我在罐子所在的文件夹中创建了这样的HTML:

<APPLET CODE="gui.MyApplet.class" width="650" height="650" ARCHIVE="proj.jar,myApplet.jar,firebirdsql-full.jar">
    <a href="http://java.com/en/download/index.jsp">Java</a>
</APPLET>

我也尝试更改ARCHIVE属性中的jar顺序。

但是我继续收到以下错误(在Java控制台中):

Exception in thread "thread applet-gui.MyApplet.class-2" java.lang.NoClassDefFoundError: Could not initialize class org.firebirdsql.jdbc.FBDriver
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at db.DAO.getDBConnection(DAO.java:45)
    at db.MyDAO.initPreparedStatements(MyDAO.java:37)
    at db.MyDAO.<init>(MyDAO.java:33)
    at db.MyDAO.getInstance(MyDAO.java:27)
    at model.Controller.<init>(Controller.java:27)
    at gui.MyApplet.getJTabbedPane(MyApplet.java:81)
    at gui.MyApplet.getJContentPane(MyApplet.java:69)
    at gui.MyApplet.init(MyApplet.java:52)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我想念什么吗?

编辑:

不知何故,在调试时,我还收到了另一个堆栈跟踪:

Exception in thread "thread applet-gui.MyApplet.class-1" 
java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at db.DAO.getDBConnection(DAO.java:45)
    at db.MyDAO.initPreparedStatements(MyDAO.java:37)
    at db.MyDAO.<init>(MyDAO.java:33)
    at db.MyDAO.getInstance(MyDAO.java:27)
    at model.Controller.<init>(Controller.java:27)
    at gui.MyApplet.getJTabbedPane(MyApplet.java:81)
    at gui.MyApplet.getJContentPane(MyApplet.java:69)
    at gui.MyApplet.init(MyApplet.java:52)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission FBLog4j read)
    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.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at org.firebirdsql.logging.LoggerFactory.getLogger(LoggerFactory.java:36)
    at org.firebirdsql.logging.LoggerFactory.getLogger(LoggerFactory.java:72)
    at org.firebirdsql.jdbc.FBDriver.<clinit>(FBDriver.java:63)
    ... 12 more

问题答案:

现在我们看到了第二个堆栈跟踪,很清楚发生了什么:JDBC驱动程序正在尝试使用Log4J进行日志记录。它试图从驱动程序类的静态初始化程序中的系统属性中获取日志记录参数,但由于未签名的小程序没有读取系统属性的权限而失败。

您可以签署您的applet并授予该属性(java.util.PropertyPermission
FBLog4j读取),但是老实说,这并不好。我希望它在您修复此异常后会引发其他一些安全异常。如果尚未编写此驱动程序以使其无法通过applet进行工作,则很可能是一个愚蠢的尝试。



 类似资料:
  • 当我试图使用运行测试时,我会得到这个错误: 我将部署到ext文件夹,并为我的浏览器提供了正确的版本。是什么导致了这个问题?它似乎来自,如下所示:

  • 在gradle中添加facebook依赖项后,我得到了这个运行时错误:

  • 问题内容: 我将eclipse用于Google Android开发。 我创建了一个库项目(在Android设置中),其中包括一个外部jar文件(参考库)。该库项目在另一个项目(将使用该库项目的实际项目)中引用。这是通过在Android设置下添加项目来完成的。 源代码可以编译,但是如果我想在设备上执行它,则将获取NoClassDefFoundError,该类 位于库项目中包含的jar文件中 。 编辑

  • 我正在尝试从ant执行一个Java类。我首先为我的类创建一个jar文件,然后通过ant目标执行它。但是它给我抛出了这个错误: 线程“main”java中出现异常。lang.NoClassDefFoundError:com/abc/utils/ClassName$内部类 我正在构建文件中创建一个jar,如下所示: 如果我在创建jar期间删除“包含”,那么一切都很好,我可以执行jar文件,但我不想包含

  • 问题内容: 我使用Java开发Web应用程序。当我将其部署到我的应用程序服务器(Jetty,Tomcat,JBoss,GlassFish等)时,将引发错误。我可以在stacktrace中看到此错误消息: 要么 这是什么意思,我该如何解决? 问题答案: 这是什么意思? 首先,让我们看一下: 当应用程序尝试使用其字符串名称通过其字符串名称加载类时抛出: 课堂教学中的方法。 课堂教学中的方法。 课堂教学

  • 问题内容: 我在Spring和Hibernate中是新手,所以我尝试基于Spring 3 + Hibernate 4来实现一些简单的Web应用程序,而当我启动tomcat时,我有以下异常: 我发现该类在hibernate 3的hibernate-core中,但是在hibernate 4中却找不到它。 我的context.xml中用于持久性的部分: 请帮我弄清楚为什么要尝试加载CacheProvid