我的Java小程序一旦停止JRE已更新为7u21工作。
简短的摘要:
我得到的例外是:netscape.javascript.JSException和
java.lang.NoClassDefFoundError。 小应用程序工作得很好,直到JRE 7u21。小应用程序是使用Oracle的DeployJava.js嵌入在网页中。
小程序签署,它使用LiveConnect的触发事件,它接入USB和通过JNI串行端口,它使用的代码从多个JAR文件。
故障发生在测试的所有桌面浏览器(火狐,Chrome,IE8 / 9和Mac上的Safari)。
细节:
我有一个Java小程序,可以让我的网站上有一个USB设备进行通信。
在过去的一年小程序一直运作良好。
一旦JRE7更新21发布 - 小程序停止工作。
小应用程序是使用Oracle的DeployJava.js图书馆网页(ASP.NET)主办。
它采用LiveConnect的引发事件回到我的JavaScript代码。
我对JRE 7u21的第一个问题是在第一次尝试通过LiveConnect的引发一个事件一个例外:
netscape.javascript.JSException: JavaScript error while calling "_notify"
at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
at <myapplet>.fireJavascriptEvent(Unknown Source)
at <myapplet>$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.asec.easypark.applets.HomeloadingApplet.start(Unknown Source)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.start(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
为了缓解这个问题,我添加了以下行到applet的ant脚本“清单”部分:
attribute name="Trusted-Library" value="true"
我内置使用JDK 7u21的小程序,它似乎帮助:
之后我开始另一个错误 - 所以我相信这一个解决了,但它可能造成的下一个问题。
第二个问题是这样的:小程序是由几个JAR文件调用代码。 在另一个JAR文件中的第一次调用的代码(不是小程序)失败,但以下情况除外:
**java.lang.NoClassDefFoundError**: com/codeminders/hidapi/HIDManager
at <PackageInSecondJar>.communication.HIDTransmitter.open(Unknown Source)
at <PackageInSecondJar>.communication.HIDTransmitterSearcher.find(Unknown Source)
at <PackageInSecondJar>.communication.CompositeTransmitterSearcher.find(Unknown Source)
at <PackageInAppletJar>.communication.AppletCommunicationBroker.setupDeviceProxy(Unknown Source)
at <PackageInAppletJar>.communication.AppletCommunicationBroker.setup(Unknown Source)
at <PackageInAppletJar>.<TheApplet>$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at <PackageInAppletJar>.<TheApplet>.start(Unknown Source)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.start(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我已经尝试了以下措施 - 没有成功:
添加HTTP头“缓存控制” =“无缓存”
添加HTTP头“缓存控制” =“无缓存,没有存储,必重新验证”
使用最新的DeployJava.js从http://java.com/js/deployJava.txt (更名为.js文件后)
该小程序已经具有下列特征:
标记安全“所有的权限”的JNLP
主要JAR与证书从外部CA签署
小应用程序代码在内部运行
AccessController.doPrivileged
块。
我是一个java的新手,所以请不要忽视明显的解决方案...
在此先感谢您的帮助,
盖伊。