我正在尝试在我的网站嵌入一个小程序,但我不能为了上帝的爱,弄明白为什么这将无法工作!我有一个名为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.classApplet构造函数和init
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()");
}发布于 2011-08-23 06:24:14
<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 (对于基于文件的路径总是一个很好的“acid测试”)。
你收到目录列表了吗?
我想应该是:
file:///C:/Users/Supuhstar/Documents/NetBeansProjects/BHSurveyor/dist/
(即没有localhost)。
对于代码基或类似路径中的初始/也有特殊意义。它等同于“网站的根”。这意味着/dist/的另一个代码库实际上指向
file:///C:/dist/
你在浏览器中得到的结果是什么?
顺便说一句,这两个问题都不是修辞问题。为了最好的帮助你,我需要答案。
在测试页面上更新
可以在http://s.supuhstar.operaunite.com/s/content/test/上查看我的设置的完整重新设计。
似乎BHSurveyor.jar包含文本,至少它是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本地测试中applet的更新
在本地下载Jar之后(遇到不同的错误,然后安装JDK 7来修复它),我终于可以看到您描述的内容了。
“错误。单击获取详细信息”消息(不提供详细信息)。
init()方法中是否有try/catch语句?applet有(非默认)构造函数吗?如果是这样的话,同样的问题是尝试/捕捉。init()和构造函数部分的代码(复制/粘贴)是什么?
我的最新理论(关于applet加载的主要问题)是,有一些try/catch语句正在吞咽或忽略异常。除此之外,我不明白为什么applet不会加载,而不会在Java控制台中显示任何相关的输出。
顺便说一下,服务器为Jar返回错误的内容类型这一事实应该得到修正,尽管这似乎不是根本的问题。
发布于 2011-08-23 05:40:58
你犯了几个错误。
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。确保它能够运行。祝好运。
发布于 2011-08-23 05:37:36
您在查看Java控制台吗?例如,在IE: Tools->Internet >Advanced中,您将看到一个启用控制台的选项。您很可能在那里看到一些有用的错误消息。
https://stackoverflow.com/questions/7156481
复制相似问题