- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我开始问这个问题,然后在提交之前找出答案。我决定无论如何都要发布这个问题,以便遇到同样问题的其他人能够从我的错误中吸取教训。
我遇到了一个小程序问题(实际上是一个 JApplet)无法实例化另一个类,该类包含在与小程序相同的 jar 中。我在 Java 控制台上看到的异常是:
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 moreCaused 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
I know that the JDataStore
class is included in the jar. If I list the contents using jar tvf CM_Library.jar
I can see that it is there under the proper package. However, the chained exceptions above lead me to believe that the class loader isn't searching the archive for JDataStore
, and is looking for the JDataStore.class file on the web server instead. Why is this? The class loader knows to load the MediatorApplet class from the jar, why doesn't it check it for JDataStore as well? In case I haven't specified the parameters correctly on the applet tag, I'll include that here as well:
<applet id="mediator-applet"
width="0"
height="0"
codebase="./"
archive="CM_Library.jar"
code="com.company.program.cm.hmi.MediatorApplet">
</applet>
最佳答案
通过查看 a suggestion 找到了答案发布 related question . Eddie 的回答并没有解决那个特定的问题,但它确实为我提供了解决方案。
从我的问题来看,不是特别明显的是 JDataStore 类继承自包含在不同 jar 中的另一个类。我已经有几个月没有处理 JDataStore 的实现细节了,所以我完全忘记了它的父类 org.json.simple.JSONObject 不在 CM_Library.jar 中,而是在 json_simple-1.0 中.2. jar 。修复相当简单,只需将丢失的 jar 复制到代码库目录并将丢失的 jar 添加到小程序标记的 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>
这修复了错误。异常消息不是特别有用。它会让您相信它根本找不到类,而实际问题是它无法为请求的类加载父类(super class)。
关于java - Applet 类加载器无法在 applet 的 jar 中找到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/872905/
我有一个java小程序,它访问客户端文件系统上的文件。为此,我为我的小程序创建了一个 jar,然后对其进行了签名,现在一切正常。 问题:有什么方法可以让我对小程序类本身进行签名,而不是先创建一个 ja
我制作了一个向用户致意的 Loader Applet,当用户单击该 Applet 上显示的按钮时,它会启动主 applet,并且 Loader Applet 被销毁。 但是点击另一个小程序没有启动!
我是小程序的新手,遇到了一些不寻常的事情。在我经历的一个程序中,applet html tag在 Applet Java file (.java) 中作为评论提及但评论似乎正在执行。这怎么可能? 代码
只是想知道是否有人有过通过 Java Applet 安装硬件驱动程序的经验。我目前正在编写一个小程序,它将访问某些硬件并将嵌入到网页中。为了让最终用户更轻松,我想让它检测是否安装了驱动程序,如果没有安
我在一家政府科学机构工作,该机构通过我们的网站提供大量技术信息。 Web 开发并不是我们真正的强项,但我们过得去。我们当前的许多内容都是通过 Java 小程序提供的。最近我们收到用户的反馈,他们无法访
我不知道是否存在解决方案,但这将是非常可取的。 我正在制作一个 Scala 小程序,我希望主 Applet 类是一个单例,以便可以在小程序的其他地方访问它,有点像: object App extend
import java.util.InputMismatchException; import java.util.Scanner; class Rectangle extends Shape
我的小程序代码编译得很好,但是,我每次都会收到“小程序已启动”消息。请不要阻止我使用 AWT 或 Applet。我只是想完成我的任务。目前,我的代码是: 主要方法 import java.awt.*;
在 Java Card 中,通常是否可以从卡上现有应用程序的上下文中安装新应用程序,例如通过应用程序定义的消息格式发送新代码,然后使用某些卡创建新应用程序实例管理器 API? 还是只能在外部使用相应的
我刚刚开始编写小程序,因此以前从未嵌入过网页。我有 2 个小程序,它们本身运行良好,但是当我尝试在同一页面中运行这 2 个小程序时,只有一个可见。这看起来很奇怪,我尝试为每个小程序使用开始和结束 fo
我有点.NET 导向,并且对Java 很陌生。使用 Eclipse IDE,每当我通过 Applet 扩展我的类时: class xyz extends Applet{ . . . }; 这会产生错误
要创建Applet程序,程序员需要从Applet包继承Applet类,并且Applet类是一个抽象类,这意味着它的继承类必须覆盖Applet类中的所有方法,但Applet则不是这样。程序员可能会或可能
我似乎在这方面找不到任何东西——除了它不能嵌入到 WebView 中。 我目前有一个图像查看产品,可以通过小程序访问并通过 HTML 页面中的 JavaScript 进行控制。 我正在研究使用 Jav
我刚刚学习java applet。我用drawLine()在小程序上画了一条线,当我按下运行时,它正常编译并使用Eclipse的内置小程序查看器显示小程序。这是代码 import java.apple
当我尝试使用 java.applet.Applet 时,出现运行时错误: java.lang.NoClassDefFoundError: java.applet.Applet 我曾尝试手动放置该库,但
我想知道是否有一种方法可以让 Java 类确定它是否在 applet 中使用? 也就是说,我有一个可供第 3 方应用程序和小程序使用的库(一个 .jar 文件)。它确实在 applet 中工作,但我想
我只想在空框架中添加一个按钮,这非常非常简单。 框架没有显示任何内容,尽管程序运行,IDE 告诉我:” java.lang.ClassCastException: Spots cannot be ca
小程序由以下代码组成: public class TestApplet extends Applet { public TestApplet() { EventQueue.invokeLate
我开始问这个问题,然后在提交之前找出答案。我决定无论如何都要发布这个问题,以便遇到同样问题的其他人能够从我的错误中吸取教训。 我遇到了一个小程序问题(实际上是一个 JApplet)无法实例化另一个类,
如何为现代浏览器部署 Java 小程序?我知道有 3 种可能性,但没有人告诉我更喜欢哪一种以及如何使用它们。 有人有这方面的资源吗?我找不到任何:( 最佳答案 如果您可以针对 Java 6 更新 10
我是一名优秀的程序员,十分优秀!