2011-07-13 6 views
3

java.lang.VerifyErrorが発生しました。これは、Oracleのページに、矛盾やセキュリティの問題が原因でスローされたことを示しています。しかし、これは非常にたくさんのことになる可能性があり、私は何を探しているのか、どのクラスを見ているのか分からない。java.lang.VerifyErrorのデバッグ

エラーメッセージは、物事を明確にしないか:

java.lang.VerifyError: (class: proto/lua/libraries/ProtoLib$Lib1, method: call signature:()Lproto/lua/LuaValue;) Wrong return type in function 

私が目を光らせて何の矛盾をすべきですか?そして、誰がそのクラスのエラーに基づいてどのクラスを見ているべきかを教えてくれますか?

これらの例外のトピック上の任意の一般的なヘルプ/情報があまりにも高く評価されるだろう

編集:私はLuaのライブラリの多くを書き直し、私はあらゆる面で完璧にうまく働いたこのエラーを持って、私が使用するまで Java SEの6アップデート26

EDIT:全体のエラー:

java.lang.VerifyError: (class: proto/lua/libraries/ProtoLib$Lib1, method: call signature:()Lproto/lua/LuaValue;) Wrong return type in function 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
    at java.lang.Class.getConstructor0(Class.java:2699) 
    at java.lang.Class.newInstance0(Class.java:326) 
    at java.lang.Class.newInstance(Class.java:308) 
    at proto.lua.libraries.LibFunction.bind(LibFunction.java:169) 
    at proto.lua.libraries.LibFunction.bind(LibFunction.java:152) 
    at proto.lua.libraries.ProtoLib.call(ProtoLib.java:26) 
    at proto.lua.otherstuff.OneArgFunction.call(OneArgFunction.java:66) 
    at proto.lua.LuaValue.load(LuaValue.java:1358) 
    at proto.lua.RavenLua.standardGlobals(RavenLua.java:100) 
    at proto.ProjectPROTO.<clinit>(ProjectPROTO.java:51) 
Could not find the main class: proto.ProjectPROTO. Program will exit. 
Exception in thread "main" Java Result: 1 

すべてproto.xxx.xxx.xxxクラスはpはソース

EDITの芸術:まあ、私はいくつか@Override注釈を忘れてしまったので、明らかにエラーが発生しましたが、彼らはしかし、エラーを与え始める作ったものか分かりません。

+0

使用しているJVMとバージョンはどれですか?あなたがどこかからLua JARをダウンロードした場合、それが壊れていないことを確認しましたか? –

+0

このエラーをスローするコードは何ですか? – Kal

+0

クラスがコンパイルされていないということはどういう意味ですか?このプロジェクトのproto/lua/*クラスはライブラリの代わりにソースコードですか? –

答えて

5

完全なスタックトレースとは何ですか?どのクラスがそのメソッドを呼び出しているかを示す必要があります。おそらく、その理由は、コンパイルされた別のバージョンのライブラリに対してコードが実行されているからであり、これらのライブラリのバージョンには互換性のない変更があるからです(エラーメッセージから別のメソッドの戻り値の型です)。

エラーがライブラリに関するものではなく、自分のコードに関するものであれば、クリーンビルドを実行します。コンパイラは、実行時に検証エラーを引き起こす可能性のあるすべてのものについてコンパイルエラーを生成する必要があります。ソースコードが正しい場合は、すべてのクラスファイルを正しく再構築する必要があります。

+0

クリーンビルドは役に立たなかったが、どうにかして 'クリーニング'を考えて失敗したクラスをすべてチェックし、 @Overrideアノテーションを持たないメソッドをオーバーライドしていたクラスがいくつかありましたが、習慣の中でそれを修正しました。コードをもう一度実行して、VerifyErrorが終了しました。何が起こったのか分かりませんが、ありがとう! – Tim

4

java.lang.Verifyエラーの単一の最大の原因は、依存ライブラリとメインアプリケーションのJVMバージョンの非互換性です。したがって、Java 5を使用してアプリケーションを実行していて、従属ライブラリがJava 6でコンパイルされている場合、問題が発生する可能性があります。私はProtolibのバージョンをコンパイルするためにどのJavaのバージョンが使われたのか調査し始めますか?あなたは使用しています。 @知覚の答えを1として

+0

Protolibがコンパイルされず、私が使用するコンパイルされたすべてのライブラリが30分​​前までうまく動作しました – Tim

+0

@Dasdasd - あなたのアプリケーションが変更されていないと言っていますあなたは質問を投稿する前に約30分働いていませんでしたか?そのウィンドウで何かが変更されているに違いありません。元の質問を拡大してその内容を含めることはできますか? – Perception

+0

基本的には、私は自分の働くクラスのいくつかを、新しいクラスを作成してそれにアタッチする代わりに、クラス( 'LuaUserdata')を拡張することによって組み合わせようとしています。それは4の3のために働いた、最後の1つの 'パート'は私の頭痛を引き起こす。 – Tim

1

が、私は追加します。

を最も一般的な理由は、あなたのランタイム環境では、コンパイル環境に異なる(古い)JVMのバージョンを使用しています。

+0

奇妙なことは、エラーが発生したと思われるコードでコンパイルされたライブラリを使用していないことです。 – Tim

関連する問題