1

「Java testphase」の後にこのエラーが発生します。

C:\jasmin-2.4>java testphase
Exception in thread "main" java.lang.VerifyError: 
  (class: testphase, method: main signature: ([Ljava/lang/String;)V) 
  Expecting to find object/array on stack
  Could not find the main class: testphase. 
Program will exit.

コード:

.class public testphase
.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 10
  .limit locals 3

  ; assign something
  iconst_1
  iconst_1
  iadd
  istore_1

 ; assign something
  iconst_2
  iconst_2
  isub
  istore_2

 ; Writeln
  getstatic java/lang/System/out Ljava/io/PrintStream;
  iload_1
  invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V

  return
.end method
4

2 に答える 2

1

複数の問題があります。

最初に:ファイナルを変更する必要があります

iload_1

することが

aload_1

  • String配列パラメーターをロードしているので、整数ロード(iload)を使用してロードしないでください。

次に、文字列ではなく文字列配列を読み込んでいます。必要な要素を選択する必要があります。(配列内の要素を逆参照する方法については、aaloadを検索してください。)

実際に機能する前に、両方を修正する必要があります。

于 2011-07-15T15:59:42.240 に答える
0

これは機能します:

.class public testphase
.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 3

  ; assign something
  iconst_1
  iconst_1
  iadd
  istore_1

  ; assign something
  iconst_2
  iconst_2
  isub
  istore_2

  ; Writeln
  getstatic java/lang/System/out Ljava/io/PrintStream;
  iload_1
  invokevirtual java/io/PrintStream/println(I)V

  ; Writeln variable 2
  getstatic java/lang/System/out Ljava/io/PrintStream;
  iload_2
  invokevirtual java/io/PrintStream/println(I)V

  return
.end method

基本的に、変更はの署名で構成されますSystem.out.println(int)

于 2011-08-05T19:55:37.703 に答える