0

我创建了一个操作 JSP 网页表单字段的 Java Applet。当然,JSP 调用 Java Applet。

这是我在 JSP 上运行 Java Applet 时在 Java 控制台中遇到的错误:

Ignored exception: java.security.PrivilegedActionException:
    java.lang.reflect.InvocationTargetException

我没有调用 InvocationTargetException 或在代码中传递任何异常。不知何故,通过艰苦的反复试验,我设法追踪到导致错误的行是:

BlowfishCBC bfcbc = new BlowfishCBC(testkey, 0, testkey.length, CBCIV_START);

作为测试,我禁用了所有依赖于 JSP 的代码,因此我可以在 Eclipse 中运行它。我创建了一个 main 方法来执行 Java Applet,然后在 Eclipse 中运行它。我根本没有收到任何错误或警告。

我将相同的 Java Applet 作为 JAR 导出,将其复制到服务器,重新启动 Apache Tomcat,转到我的 Web 浏览器上的页面,运行 applet,然后发生相同的 InvocationTargetException 错误

可能是什么问题呢?

注意:我没有在代码中的任何地方使用 try..catch。我可以在代码中添加什么来捕获此异常信息,我该怎么做?

谢谢你。

更新:

这是来自 Java 控制台的堆栈跟踪:

java.net.MalformedURLException: no protocol: 
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.access$000(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
java.net.MalformedURLException: no protocol: 
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.access$000(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
java.net.MalformedURLException: no protocol: 
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.checkLiveConnectCaller(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation.access$000(Unknown Source)
at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
in encrypt method
trying to get pwd value from document
got pwd from document, password is 12345
is this getting here?
Ignored exception: java.security.PrivilegedActionException:  java.lang.reflect.InvocationTargetException

我认为这就是堆栈跟踪。我希望这些信息是足够的和有用的。

4

1 回答 1

0

我发现了问题。persay,它与代码无关。这是清单文件。

这是清单文件,因为它最初是由 Eclipse 创建的:

Manifest-Version: 1.0

这是我修改后的样子:

Manifest-Version: 1.0 
Class-Path: blowfishj.jar

我没有意识到Java 控制面板应该在其资源中显示blowfishj.jar 文件。我在那里看到了我的 Java Applet,但是在我对这个清单文件进行更改之前,blowfishj.jar 文件不在那里。我没有意识到它需要清单文件。

不过,我不明白为什么它在清单文件中需要这个以及为什么这个修改会修复它。也许有人可以回答这个问题。

谢谢你。

于 2012-09-19T18:55:00.820 回答