【发布时间】:2011-11-01 15:47:41
【问题描述】:
我正在尝试在我的网站中嵌入一个小程序,但看在上帝的份上,我无法弄清楚为什么这不起作用!我有一个名为BHSurveyor.jar 的JAR 文件,我的类在bhs.gui.GUIApplet 中扩展了javax.swing.JApplet。现在,我已经尝试将它嵌入到一个页面中,并且我已经尝试了所有来自
<applet codebase="/dist/" archive="/dist/BHSurveyor.jar" code="bhs.gui.GUIApplet" width="256px" height="256px" />
(在本地打开的 HTML 文件中,在 JAR 下一级文件夹中)到
<applet codebase="file://localhost/C:/Users/Supuhstar/Documents/NetBeansProjects/BHSurveyor/dist/" archive="file://localhost/C:/Users/Supuhstar/Documents/NetBeansProjects/BHSurveyor/dist/BHSurveyor.jar" code="bhs.gui.GUIApplet.class" width="256px" height="256px" />
及其所有排列,然后...但是每次,我都会收到相同的红色“错误。单击以获取详细信息”消息(未提供详细信息)。 有人可以告诉我该怎么做吗?
我的设置
可以在http://s.supuhstar.operaunite.com/s/content/test/查看我的设置的完整再现
测试
按照建议,我跑了
jar -tvf BHSurveyor.jar
'jar' is not recognized as an internal or external command,
operable program or batch file.
假设他们的意思是别的,我试过了
java -jar -tvf BHSurveyor.jar
Unrecognized option: -tvf
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
所以你看到这没有帮助......再次,从假设出发,我运行了这个并得到了我希望的预期输出:
"C:\Program Files\Java\jdk1.7.0\bin\jar" -tvf BHSurveyor.jar
0 Mon Aug 29 11:56:10 EDT 2011 META-INF/
228 Mon Aug 29 11:56:08 EDT 2011 META-INF/MANIFEST.MF
0 Mon Aug 29 11:56:10 EDT 2011 bhs/
0 Mon Aug 29 11:56:10 EDT 2011 bhs/gui/
2264 Mon Aug 29 11:56:08 EDT 2011 bhs/AnswerType.class
1851 Mon Aug 29 11:56:08 EDT 2011 bhs/DefPage.class
1965 Mon Aug 29 11:56:10 EDT 2011 bhs/DefQuestion.class
1463 Mon Aug 29 11:56:10 EDT 2011 bhs/DefTitlePage.class
1338 Mon Aug 29 11:56:10 EDT 2011 bhs/Main.class
615 Mon Aug 29 11:56:08 EDT 2011 bhs/Page.class
786 Mon Aug 29 11:56:10 EDT 2011 bhs/Question.class
402 Mon Aug 29 11:56:10 EDT 2011 bhs/TitlePage.class
1757 Mon Aug 29 11:56:10 EDT 2011 bhs/Utils$1.class
766 Mon Aug 29 11:56:10 EDT 2011 bhs/Utils$2.class
6188 Mon Aug 29 11:56:10 EDT 2011 bhs/Utils.class
3409 Mon Aug 29 11:56:10 EDT 2011 bhs/gui/GUIApplet.class
1218 Mon Aug 29 11:56:10 EDT 2011 bhs/gui/GUIJFrame.class
3549 Mon Aug 29 11:56:10 EDT 2011 bhs/gui/GUIPage.class
824 Mon Aug 29 11:56:10 EDT 2011 bhs/gui/GUIQuestion$1.class
8650 Mon Aug 29 11:56:10 EDT 2011 bhs/gui/GUIQuestion.class
Applet 构造函数和初始化
public GUIApplet(Page... pgs)// throws UnknownHostException
{
System.out.println("new GUIApplet(Page... " + pgs + ")");
// System.out.println(java.net.InetAddress.getLocalHost().getHostAddress());
System.out.println(" setting layout...");
setLayout(new java.awt.GridBagLayout());
System.out.println(" adding components...");
addComponents();
System.out.println(" initializing pages...");
pages = new ArrayPP<>();
System.out.println(" installing pages...");
int i=1;
for (Page p : pgs)
if (p != null)
installPage(p);
System.out.println(" changing look-and-feel...");
LookAndFeelChanger.setLookAndFeel(LookAndFeelChanger.NIMBUS);
System.out.println(" fixing nav buttons...");
fixNavButtons();
System.out.println("GUIApplet complete");
}
public void init()
{
// TODO start asynchronous download of heavy resources
System.out.println("GUIApplet.init()");
}
【问题讨论】:
-
版主说明 此问题下的评论已被清除,因为它们已退化为噪音。请保持 cmets 具有建设性。
-
这不是我期望的输出,但那是进步,我还有另一个理论要追求。我会尽快回复你(ish)。
-
VM 不会调用该构造函数,因为它接受参数。
init()方法为空。这是小程序中不会出现组件的一个原因。为什么单个构造函数会抛出HeadlessException?声明一些不应该在小程序中发生的事情似乎有点过分(或者至少,我不知道它是如何发生的)。在整个构造函数中散布一些System.out.println()方法并将一个放在init()中,这样我们就可以跟踪它在做什么(调用了哪些方法/构造函数)以及哪些代码行成功完成。