3

jasmin-2.4 ディストリビューションから新しくコンパイルされた HelloWorld.j の実行に問題があります。

jasmin-2.4 をダウンロードしました。次を使用して問題なくコンパイルできます。

java -jar jasmin.jar examples\HelloWorld.j

出力は次のとおりです。

生成: NoJad\j.class

新しくコンパイルしたプログラムを実行すると:

java NoJad.j

例外がスローされます:

スレッド「メイン」での例外 java.lang.VerifyError: (クラス: NoJad/j、メソッド: メイン シグネチャ: ([Ljava/lang/String;)V) スタック上のオブジェクト/配列の検索を期待しています メイン クラスが見つかりませんでした: NoJad.j. プログラムは終了します。

これは、HelloWorld.j の例のバグだと思いがちです。おそらく、新しいベリファイアがバグをキャッチしたのでしょうか???

注 1: ディストリビューション内の事前コンパイルされた HelloWorld.class は期待どおりに動作します。

注 2: このバージョンの Java を使用しています Java バージョン "1.6.0_24" Java(TM) SE ランタイム環境 (ビルド 1.6.0_24-b07) Java HotSpot(TM) 64 ビット サーバー VM (ビルド 19.1-b02、混合)モード)

ディストリビューションの HelloWorld.j ファイルは次のとおりです。

; --- Copyright Jonathan Meyer 1996. All rights reserved. -----------------
; File:      jasmin/examples/HelloWorld.j
; Author:    Jonathan Meyer, 10 July 1996
; Purpose:   Prints out "Hello World!"
; -------------------------------------------------------------------------


.class public NoJad.j
.super java/lang/Object

;
; standard initializer
.method public <init>()V
   aload_0

   invokenonvirtual java/lang/Object/<init>()V
   return
.end method

.method public static main([Ljava/lang/String;)V
   .limit stack 2
   .limit locals 2

   bipush 2
   astore 0
   bipush 3
   astore 1

   aload 0
   aload 1
   astore 0
   astore 1

   return
.end method
4

1 に答える 1

4

問題は、HelloWorld.j ファイルが偽物であることです。このスレッドを参照してください: http://sourceforge.net/projects/jasmin/forums/forum/349052/topic/3330588

于 2011-04-21T06:24:53.233 に答える