代码之家  ›  专栏  ›  技术社区  ›  A. Levy

小程序类加载器在小程序的jar中找不到类

  •  4
  • A. Levy  · 技术社区  · 16 年前


    JApplet

    Exception in thread "thread applet-com.company.program.cm.hmi.MediatorApplet-1" java.lang.NoClassDefFoundError: com/company/program/cm/cs/JDataStore
        at com.company.program.cm.hmi.MediatorApplet.getMediator(MediatorApplet.java:63)
        at com.company.program.cm.hmi.MediatorApplet.init(MediatorApplet.java:49)
        at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: com.company.program.cm.cs.JDataStore
        at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        ... 4 more
    Caused by: java.io.IOException: open HTTP connection failed:http://localhost:8080/TransportHMI/pages/com/company/program/cm/cs/JDataStore.class
        at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
        at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
        at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        ... 8 more
    

    JDataStore jar tvf CM_Library.jar

    <applet id="mediator-applet"
            width="0"
            height="0"
            codebase="./"
            archive="CM_Library.jar"
            code="com.company.program.cm.hmi.MediatorApplet">
    </applet>
    
    1 回复  |  直到 16 年前
        1
  •  8
  •   Community CDub    8 年前

    a suggestion related question 埃迪的回答并没有解决那个特定的问题,但它确实为我提供了解决方案。

    从我的问题中不太明显的是,JDataStore类继承了另一个包含在不同jar中的类。几个月来,我不必处理JDataStore的实现细节,所以我完全忘记了它的父类org.json.simple。JSONObject不在CM_Library.jar中,但在json_simple-1.0.2.jar中。修复相当简单,只需将缺少的jar复制到代码库目录中,并将缺少的jar添加到applet标签中逗号分隔的存档列表中即可 archive

    <applet id="mediator-applet"
            width="0"
            height="0"
            codebase="./"
            archive="CM_Library.jar, json_simple-1.0.2.jar"
            code="com.company.program.cm.hmi.MediatorApplet">
    </applet>