2011-04-11 26 views
1

我正在开发Java小程序,最近我尝试在不属于我的机器上演示小程序。然而,我无法让小程序在该机器上运行,因为它在安全例外情况下保持失败。该小程序可在http://www.cs.rpi.edu/~madiav/launch.html找到。开发机器以外的机器上的小程序failng

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

从Java控制台的整个输出可以在这里找到http://pastebin.com/DjFAJgVW 类未找到类型的例子线

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

有谁知道我是如何摆脱这些和/或这是否是什么导致执行失败在其他机器上?

+0

你写了这个小程序吗?或者它是第三方的东西?在appletviewer中在桌面上运行的小程序可以避开各种不会在浏览器中运行的东西,包括文件I/O和任意网络连接。 – 2011-04-11 04:42:19

+0

我开发了applet,运行良好,当我使用chrome和Firefox从我的桌面上运行它时,它运行良好,但它无法在我的同事机器上运行。 – 2011-04-11 04:45:20

+0

更快得到更好的帮助1)发布[SSCCE](http://pscode.org/sscce.html)的代码(我没有关注该链接)。 2)**一个applet的URL **很少会跟随applet链接,特别是对于一个可信的或大的applet,但是值得一试。顺便说一句 - 是数码签名的小程序吗? – 2011-04-11 04:49:55

回答

1

通常可以通过添加可以减小消息的 '未找到类' ..

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

..to的applet元件。至少如果这些课程是Jar'd。

有关详细信息,请参阅Special Applet Attributes


注:这是在HTML一个applet paramJNLP文件一个param


让你的朋友报告java.version & java.vendor properties


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


编辑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实例。我想到了如何“绕过”一次并尝试它 - 看到整个浏览器崩溃。)

测试:当信任对话框判决同意:

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


为什么这个applet需要信任?


它可能是更好的分配与applet和有JNLP直接启动JFrame

由于您似乎期望最终用户拥有1.6.0(_10 +),所以在pack()被调用后,在JFrame上调用setMinimumSize()也是值得的。

+0

谢谢你的尝试。我在我的JNLP文件中添加了相应的属性,这些消息并没有消失。我想这些消息必须处理另一个问题。 – 2011-04-11 05:04:51

+0

'@Varun Madiath'根据最新信息查看我对答案的编辑。 – 2011-04-11 05:29:35

0

但是我无法获得在该机器上运行的小程序,因为它在安全例外情况下保持失败。

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

+0

我也运行Java 1.6。但是,这可能是。考虑到这项工作,我从未想过认为我的同事会使用旧版本,但我会研究这一点。 – 2011-04-11 05:06:04

相关问题