0

JSP Web ページのフォーム フィールドを操作する Java アプレットを作成しました。もちろん、JSP は Java アプレットを呼び出します。

JSP で Java アプレットを実行すると、Java コンソールに次のエラーが表示されます。

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

コードで InvocationTargetException を呼び出したり、例外を渡したりしていません。どういうわけか、骨の折れる試行錯誤によって、エラーの原因となっている行が次のとおりであることを追跡することができました。

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

テストとして、JSP に依存するすべてのコードを無効にして、Eclipse 内で実行できるようにしました。Java アプレットを実行するメイン メソッドを作成し、それを Eclipse 内で実行しました。エラーや警告はまったくありませんでした。

同じ Java アプレットを JAR としてエクスポートし、それをサーバーにコピーし、Apache Tomcat を再起動し、Web ブラウザーでそのページに移動し、アプレットを実行しましたが、同じ 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

問題が見つかりました。それはコードとは何の関係もありませんでした。マニフェストファイルでした。

最初に Eclipse によって作成されたマニフェスト ファイルは次のとおりです。

Manifest-Version: 1.0

これが私がそれを変更した後です:

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

Java コントロール パネルの [リソース] に、blowfishj.jar ファイルが表示されるはずだとは知りませんでした。そこに Java アプレットが表示されますが、このマニフェスト ファイルに変更を加えるまで、blowfishj.jar ファイルはそこにありませんでした。マニフェストファイルが必要だとは知りませんでした。

ただし、マニフェスト ファイルでこれが必要な理由と、この変更で修正される理由がわかりません。多分誰かがその質問に答えることができます。

ありがとうございました。

于 2012-09-19T18:55:00.820 に答える