2016-06-19 10 views
2

プログラムJBE(Javaバイトコードエディタ)http://set.ee/jbeを使用しています。 私は、ファイルを.classファイルするためにバイトコードをコンパイルしようとしていますが、それは原因にエラーを出力し続けるJavaバイトコードのコンパイル "構文エラー、行、命令"

Error: Syntax error at line 3088, instruction "wide" 
Error: Syntax error at line 3090, instruction "wide" 
Error: Syntax error at line 3096, instruction "wide" 

これは、元の一部である(私は何も変わらないんだが):

new os 
dup 
sipush 399 
bipush 42 
invokespecial os/<init>(II)V 
astore 255 
ldc "center_tile_s" 
invokestatic nz/cX(Ljava/lang/String;)Lor; 
wide 
astore 256 
wide 
aload 256 
ldc 0.85 
invokevirtual oi/j(F)V 
aload 255 
ldc "layer_591" 
wide 
aload 256 
invokevirtual os/b(Ljava/lang/String;Loi;)V 
ldc "center_tile_s" 
invokestatic nz/cX(Ljava/lang/String;)Lor; 
wide 
astore 257 
wide 
aload 257 
ldc 0.85 
invokevirtual oi/j(F)V 
wide 
aload 257 
iconst_0 
bipush 20 
invokevirtual oi/p(II)V 
aload 255 
ldc "layer_592" 
wide 
aload 257 
invokevirtual os/b(Ljava/lang/String;Loi;)V 
+0

ターゲットJavaバージョンに関する行番号といくつかの情報があると便利な場合があります。 – hotzst

+0

ワイド命令を1行に入れてみましたか?例えば'wide astore 256'。おそらくJBEのバグでしょう。とにかく、すべてのクラスファイル機能を完全にサポートし、より良いエラーメッセージを持つバイトコードアセンブラ/ディスアセンブラが必要な場合は、常にKrakatauがあります。 – Antimony

+0

私はそれが私が持っている問題だと思います。私は複数の行をマージすることによって別のエラーを解決しました。私はすぐに更新します。ありがとうございました。 –

答えて

0

I JBEには慣れていませんが、問題は広い命令が2行に分かれていると思われます。

ほとんどのJavaバイトコード・アセンブラは、それが単一の行にあることを期待しています。 wide astore 256であり、2つの半分はすべての目的と目的で同じ命令の一部であり、2番目の部分のコード化は幅があるかどうかによって異なります。

JBEがそれ自体が予期している形式でワイド命令を出力していない場合、これはJBEのバグであり、報告する必要があります。

既知のまたは文書化されたすべてのクラスファイル機能がサポートされているので、バイトコードの編集をKrakatau assembler/disassemblerに切り替えると便利です。 (開示:私はKrakatauの著者です)

関連する問題