我正在尝试在我的网站中嵌入一个小程序,但我不能因为上帝的爱而弄清楚为什么这不起作用!我有一个名为BHSurveyor.jar
的JAR文件,我的类在javax.swing.JApplet
扩展了bhs.gui.GUIApplet
。现在,我已经尝试将其嵌入到页面中,并且我已尝试了
<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
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()");
}
答案 0 :(得分:2)
你犯了几个错误。
archive
必须与代码库相关。这意味着如果你的jar位于dist
文件夹下,你应该说:<applet codebase="/dist/" archive="BHSurveyor.jar"
或<applet codebase="/" archive="/dist/BHSurveyor.jar"
(除非你的jar实际上在/dist/dist/BHSurveyor.jar
下).class
后缀,因此在您的情况下写:code =“bhs.gui.GUIApplet.class”(正如您在第二个示例中所做的那样代码库和存档似乎是完全错误的。px
:width="256" height="256"
使用Applet控制台。它可以从浏览器的菜单启动。可能你会在那里看到某种例外,它可以帮助你理解问题所在。
如果这一切都无济于事,请执行以下操作。
appletviewer
或使用IDE检查applet。确保它能够运行。答案 1 :(得分:2)
<applet
codebase="/dist/"
archive="/dist/BHSurveyor.jar"
code="bhs.gui.GUIApplet"
width="256px"
height="256px" />
将其更改为..
<applet
codebase="dist/"
archive="BHSurveyor.jar"
code="bhs.gui.GUIApplet"
width="256"
height="256" >
</applet>
注意:根据我的统计,这两个applet
元素之间存在5个差异。
<applet
codebase="file://localhost/C:/Users/Supuhstar/Documents/NetBeansProjects/BHSurveyor/dist/"
..
对该代码库绝对路径的仔细检查促使我做出进一步的评论。
我怀疑是否有任何这样的路径如图所示。将其复制/粘贴到浏览器地址栏并按Enter键(对于基于文件的路径,始终是一个很好的“酸性测试”)。
您是否获得目录列表?
我怀疑它应该是:
file:///C:/Users/Supuhstar/Documents/NetBeansProjects/BHSurveyor/dist/
(即没有localhost
)。
对于代码库或类似路径中的初始/
,也有特殊意义。它等同于“网站的根”。这意味着您的/dist/
的其他代码库实际指向
file:///C:/dist/
您在浏览器中获得该路径的结果是什么?
顺便说一句 - 这些问题都不是夸夸其谈。为了最好地帮助你,我需要答案。查看我的设置的完整重新创建
似乎BHSurveyor.jar包含文字,至少它是returning a content-type of text/html
。控制台非常有用..
java.lang.reflect.InvocationTargetException
at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: java.lang.InstantiationException: bhs.gui.GUIApplet
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.InstantiationException: bhs.gui.GUIApplet
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 15 more
Exception: java.lang.reflect.InvocationTargetException
在本地下载Jar后,(遇到不同的错误,然后安装JDK 7进行修复),我终于可以看到你所描述的内容了。
“错误。点击查看详细信息”消息(未提供详细信息)。
init()
方法中是否有任何try / catch语句? applet是否有(非默认)构造函数?如果是这样,同样的问题重新尝试/捕获。init()
和构造函数部分的代码(复制/粘贴)是什么?我的最新理论(关于applet加载的主要问题)是有try
/ catch
语句吞咽或忽略异常。除此之外,我不知道为什么applet不会加载,但在Java控制台中没有显示任何相关的输出。
顺便说一句,服务器返回Jar的错误内容类型的事实应该修复,尽管这似乎不是潜在的问题。
答案 2 :(得分:0)
你在寻找Java控制台吗?例如,在IE:Tools-&gt; Internet Options-&gt; Advanced中,您将看到启用控制台的选项。您可能会在那里看到一些有用的错误消息。