我知道这不是最佳选择,但我必须使用它,一个调用applet的页面。
我的问题是,当我这样做时,我收到了一个相当神秘的错误信息:
“未捕获的异常:错误调用NPObject上的方法!
[插件异常:java.lang.reflect.InvocationTargetException]。“
任何人都可以解码吗?即便有多种可能性比我提出的垃圾更好。对applet的基本调用来自javascript调用:
document.getElementById('my_applet').passData("pass some data", someOtherData);
如您所见,passData方法是我尝试使用的公开方法。 applet本身在页面上运行正常,就在我尝试调用它时,除了抛出该错误之外它什么都不做。
如果我问那个在applet上工作的人(这不是我的部分),他们是否有可能添加建设性的错误抛出,或者我甚至还没有连接到applet?
答案 0 :(得分:4)
InvocationTargetException表示applet中的基础方法引发了异常。 Javascript to Java“boundary”使用反射,因此Java代码抛出的异常会像这样包装。 (这使得可以将它们与进入Java代码之前抛出的异常区分开来。例如,如果您尝试调用不存在的方法。)
您可以通过捕获InvocationTargetException然后调用其getTargetException()
或getCause()
方法来获取原始异常(它们都完全相同)。
答案 1 :(得分:0)
我建议您查看 someOtherData 是什么。如果 someOtherData 不是正确的类型,则可能导致此类异常。听起来你正试图传递一个DOM对象?
在O'Reilly's JavaScript Guide中查看此页面以查看可用类型。