1

我正在开发一个 Java 小程序,最近我试图在不属于我的机器上演示该小程序。但是,我无法让小程序在那台机器上运行,因为它一直因安全异常而失败。该小程序可以在http://www.cs.rpi.edu/~madiav/launch.html找到。

遗憾的是,我无法访问这台机器来收集堆栈跟踪或 Java 控制台的输出。但是我注意到我计算机上的 Java 控制台会吐出很多与找不到类有关的消息,但是胃口仍然按预期运行,所以我忽略了它们。

Java 控制台的完整输出可以在这里找到http://pastebin.com/DjFAJgVW 类未找到类型的示例行是

basic: JNLP2ClassLoader.findClass: RhythmWheels.Open: try again ..

有谁知道我怎样才能摆脱这些和/或这是否是导致其他机器上执行失败的原因?

4

2 回答 2

1

'class not found' 消息通常可以通过添加 .. 来减少。

<param name='codebase_lookup' value='false'> 

..到applet元素。至少如果这些课程是 Jar'd 的话。

有关详细信息,请参阅特殊小程序属性


注意:这是HTMLparam中的小程序,而不是JNLP 文件中的小程序。param


让您的朋友报告java.version 和 java.vendor 属性


Applet 只能由 Sun 的 1.6.0_10+ 中的 JNLP 配置。即使这样,浏览器也需要专门配置为在 Linux 上使用“下一代”插件。最好(至少在测试时)将一个完全不同的小程序放在 HTML 中的小程序元素中(与 JNLP 中指定的小程序相同),以帮助判断是否获得了“下一代”。/plugin2' 的行为。


编辑2:

测试:当信任对话被拒绝时:

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)

从哪里来ExitException?我在跟踪中没有看到任何提及非 Sun 代码,但我不熟悉确切的RuntimeException.

确保框架不会尝试调用JFrame.EXIT_ON_CLOSE. 即使是受信任的小程序也不允许结束当前的 VM 实例。我想出了一次如何“绕过”它并尝试过 - 看到整个浏览器崩溃。;)

测试:当信任对话框正常时:

小程序运行并产生一个按钮来弹出自由浮动的“混合器”。按钮可以发出声音,但无法从那里发出声音。


为什么这个小程序需要信任?


放弃小程序并让 JNLP 直接启动可能会更好JFrame

由于您似乎希望最终用户拥有 1.6.0(_10+),因此调用after也是值得setMinimumSize()的。JFramepack()

于 2011-04-11T04:57:06.233 回答
0

但是,我无法让小程序在那台机器上运行,因为它一直因安全异常而失败。

我收到证书警告,但随后它运行。也许是 Java 版本的问题?我有一个相当新的 1.6 版本。

于 2011-04-11T05:05:25.210 回答