103

Javaのコードの最大サイズはありますか?10,000行以上の関数を書きました。実際には、各行は配列変数に値を割り当てます。

arts_bag[10792]="newyorkartworld";
arts_bag[10793]="leningradschool";
arts_bag[10794]="mailart";
arts_bag[10795]="artspan";
arts_bag[10796]="watercolor";
arts_bag[10797]="sculptures";
arts_bag[10798]="stonesculpture"; 

そして、コンパイル中に、このエラーが発生します:コードが大きすぎます

どうすればこれを克服できますか?

4

14 に答える 14

102

Javaクラスの単一のメソッドは、最大64KBのバイトコードである可能性があります。

しかし、これをクリーンアップする必要があります!

ファイルを使用.propertiesしてこのデータを保存し、java.util.Properties

これを行うには、.propertiesファイルをクラスパスに配置し、次を使用します。

Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("yourfile.properties");
properties.load(inputStream);
于 2010-03-09T09:35:50.340 に答える
19

メソッドには64Kバイトコードのサイズ制限があります

そうは言っても、私はリチャードと同意する必要があります。なぜそんなに大きな方法が必要なのですか?OPの例を考えると、プロパティファイルで十分です...必要に応じてデータベースでも十分です。

于 2010-03-09T09:36:32.753 に答える
16

Java 仮想マシンの仕様によると、メソッドのコードは 65536 バイトを超えてはなりません

itemの値は、このメソッドの配列code_length内のバイト数を示します。code

code_length の値は 0 より大きく (コード配列が空であってはならないため)、65536 より小さくなければなりません。

code_lengthcode[]メソッドの実際のバイトコードを含む属性のサイズを定義します。

このcode配列は、メソッドを実装する Java 仮想マシン コードの実際のバイト数を示します。

于 2010-03-09T09:47:59.860 に答える
7

これは少し狂気のようです。テキストファイルやその他のデータソースから値を読み取って配列を初期化することはできませんか?

于 2010-03-09T09:35:16.393 に答える
2

コードをリファクタリングしてみてください。Java ではメソッドのサイズに制限があります。

于 2010-03-09T09:39:49.533 に答える
2

他の回答で述べたように、メソッドには64KBのバイトコード制限があります(少なくともSunのJavaコンパイラでは)

私には、そのメソッドをより多くのメソッドに分割する方が理にかなっています-それぞれが特定の関連するものを配列に割り当てます(これを行うにはArrayListを使用する方が理にかなっているかもしれません)

例えば:

public void addArrayItems()
{
  addSculptureItems(list);
  ...
}

public void addSculptureItems(ArrayList list)
{
  list.add("sculptures");
  list.add("stonesculpture");
}

または、プロパティファイルのように固定されている場合は、静的リソースからアイテムをロードできます

于 2010-03-09T09:44:37.427 に答える
1

別のメソッドを追加して、追加のデータ スペース用にコード用のスペースを作成できます。メソッドが大量のデータ スペースを占有している可能性があります。同じ問題があったため、メソッドを分割してみてください。Java Android コードで同じデータに対して別の追加メソッドを作成して修正します。それを行った後、問題はなくなりました。

于 2015-12-23T11:05:24.127 に答える
0

.java ファイルのサイズが 500KB を超える列挙型があります。何らかの理由で Eclipse でビルドできます。Eclipse でエクスポートされた ant build.xml はできません。私はこれを調べており、この投稿を更新します。

于 2019-11-29T19:50:33.313 に答える