我正在开发一个Java applet,最近我尝试在不属于我的机器上演示applet。但是我无法让applet在该计算机上运行,因为它一直没有安全异常。小程序可以在http://www.cs.rpi.edu/~madiav/launch.html找到。
遗憾的是,我无法访问此其他计算机来收集堆栈跟踪或Java控制台的输出。但是我注意到我的计算机上的Java控制台发出了很多与未找到的类相关的消息,但是这个消息仍按预期运行,所以我忽略了它们。
可以在此处找到Java控制台的整个输出http://pastebin.com/DjFAJgVW 未找到类的示例行是
basic: JNLP2ClassLoader.findClass: RhythmWheels.Open: try again ..
有谁知道如何摆脱这些和/或这是否是导致其他机器上的执行失败的原因?
答案 0 :(得分:1)
通常可以通过添加“
”来减少“未找到课程”消息<param name='codebase_lookup' value='false'>
..到applet
元素。至少如果这些类是Jar'd。
有关详细信息,请参阅Special Applet Attributes。
注意:这是 HTML 中的小程序param
, JNLP文件中 <{1}}
让您的朋友报告java.version & java.vendor properties。
小程序只能由Sun的1.6.0_10 +中的JNLP配置。即使这样,浏览器也需要专门配置为在Linux上使用“下一代”插件。最好(至少在测试时)将完全不同的applet放在HTML中的applet元素中(到JNLP中指定的那个),以帮助判断是否获得了“下一代”。 / plug-in2'的行为。
编辑2:
测试:拒绝信任对话框时:
param
exception: exit(-1).
ExitException[ 4]java.lang.RuntimeException: exit(-1)
at com.sun.javaws.Main.systemExit(Unknown Source)
at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source)
at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception: ExitException[ 4]java.lang.RuntimeException: exit(-1)
来自哪里?我没有在跟踪中看到任何关于非Sun代码的提及,但我对此不熟悉ExitException
。
确保相框不会尝试拨打RuntimeException
。甚至不允许受信任的applet结束当前的VM实例。我想到了如何“绕过”一次并尝试过 - 看到整个浏览器崩溃。 ;)
测试:当信任对话框确定时:
Applet运行并生成一个按钮以弹出自由浮动的“混音器”。按钮可以发出声音,但无法从那里看出来。
为什么这个小程序确实需要信任?
放弃applet并让JNLP直接启动JFrame.EXIT_ON_CLOSE
可能会更好。
由于您似乎期望最终用户拥有1.6.0(_10 +),因此在调用JFrame
之后调用setMinimumSize()
上的JFrame
也是值得的。
答案 1 :(得分:0)
但是我无法让applet在该计算机上运行,因为它一直没有安全例外。
我收到证书警告,但随后就会运行。也许是Java版本的问题?我有一个非常近的1.6版本。