【发布时间】:2011-05-03 18:05:59
【问题描述】:
我已经使用 NetBeans 创建了一个 Applet。我的伙伴使用了 NetBean 的拖放式 Swing 编辑器作为界面。当我右键单击小程序文件并单击“运行”时,它运行得非常好,没有异常或警告。但是,当我构建它并将 NetBeans 生成的 html 文件放在我机器上的 apache 服务器上并运行它时,它会引发此异常。
这是我将其部署到本地服务器 (~myHome/Sites/) 的步骤:
我点击“清理并构建”
我右键单击选项卡小程序源文件并选择“运行”。它在新窗口中打开并运行良好。 (它还会创建一个 Applet.html 文件进行测试,这就是我这样做的原因)
我运行 $ cp -r /build ~myHome/Sites 这会将用于测试的 html 文件和包含所有已编译类的类文件夹复制到我的站点文件夹
打开网络浏览器到该路径,它会报错并且无法加载
这是来自控制台的错误:
basic: Added progress listener: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@316d3536
basic: Applet loaded.
basic: Applet resized and added to parent container
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 260792 us, pluginInit dt 255591692 us, TotalTime: 255852484 us
network: Cache entry not found [url: http://***.edu/~myHomeDirectory/build/classes/org/jdesktop/layout/GroupLayout$Group.class, version: null]
network: Connecting http://~myHomeDirectory/Sites/build/classes/org/jdesktop/layout/GroupLayout$Group.class with proxy=DIRECT
network: Connecting http://***.edu:80/ with proxy=DIRECT
network: Connecting http://***.edu/~myHomeDirectory/Sitesbuild/classes/org/jdesktop/layout/GroupLayout$Group.class with cookie
basic: Removed progress listener: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@316d3536
Exception in thread "thread applet-tab_interface/TabApplet.class-4" java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group
at tab_interface.Mediator.<init>(Mediator.java:26)
at tab_driver.TabDriver.<init>(TabDriver.java:86)
at tab_interface.TabApplet.init(TabApplet.java:69)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1640)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.ClassNotFoundException: org.jdesktop.layout.GroupLayout$Group
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:252)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:250)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:180)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:161)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 5 more
所以我想我的主要问题是:
要部署和使用 NetBeans Swing 编辑器创建的小程序,我需要做些什么吗?
有什么建议可以解决这个问题吗?我已经关注了异常,它导致了 Mediator line 26... 这是:
gui = new AppletGUI();
该行是由 NetBeans Swing 编辑器创建的 GUI 类的构造函数。这是一些基本代码来显示发生了什么。小程序、GUI、GUIMediator 在一个包中,TabDriver 在它自己的包中。
class MyApplet extends Applet{
GUIMediator gui;
TabDriver driver;
init(){
driver = new TabDriver(...); // TabDriver creates a mediator
gui = driver.getMediator();
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI();
}
});
} catch (InterruptedException ex) {
...
} catch (InvocationTargetException ex) {
...
}
}
void createGUI(){
this.add(gui.getGUI()); // add JPanel to Applet
}
}
class TabDriver {
TabDriver (...) {
this.mediator = new GUIMediator(this);
}
}
class GUIMediator {
TabDriver driver;
JPanel GUI;
GUIMediator(TabDriver td) {
driver = td;
GUI = new TabGUI();
}
}
class TabGUI extends JPanel {
TabGUI() {
// super();
// init();
// initListeners();
// ...
}
}
请注意,TabGUI 中的所有内容都已被注释掉,并且在 Web 浏览器中初始化 TabGUI 时仍然会引发异常。
抱歉,拖了这么久。
谢谢你, -N
【问题讨论】:
-
嗨@Nate 你真的可以尝试为我们建立一个SSCCE 来解决这个问题吗?我以前从来没有遇到过这样的问题。
-
相同的 JRE 版本?同一个浏览器?
-
我已经在最新版本的 FireFox 和 Chrome 上进行了尝试。我正在运行 java 1.6.0_24
标签: java swing netbeans applet