静的ブロックで小さな値 (つまり、1000 または 10000) のループ条件を使用している場合、プログラムの実行に問題はありません。問題は、特定のコードの静的ブロックのループにあります。以下のコードを実行しているときはいつでも、 「メインクラスが見つかりませんでした」という例外が発生 します。以下のコードを参照してください。
import java.util.HashMap;
import java.util.Map;
public class TestStatic {
static HashMap<String,Integer> testMap = new HashMap<String,Integer>();
public static void main(String[] args) {
for (Map.Entry<String,Integer> entry : testMap.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
static
{
for(int i=0; i< 10000000; i++)
{
testMap.put("key_" + i, i);
}
}
}
しかし、ループ条件の値を1000000に変更するたびに(0の数が1つ少なくなります)。コードは正常に動作しています。静的ブロックを実行するための時間的制約もあります。64kにサイズ制限があることは知っていますが、明確にしたいのは、この制限またはその他の理由が原因で発生していることです。