3

json-lib-2.4-jdk13.jar という名前の、おそらく最新の JDK 1.3 互換バイナリをダウンロードしましたが、次のエラーが発生しています。

Exception in thread "main" java.lang.NoSuchMethodError: java.lang.ThreadLocal: method remove()V not found
    at net.sf.json.AbstractJSON.removeInstance(AbstractJSON.java:221)

JDK 1.4 API を確認したところ、ThreadLocal の remove メソッドは実際にはサポートされておらず、JDK 1.5 でのみ追加されていることがわかりました。

問題のあるコードは次のとおりです。

protected static void removeInstance(Object instance)
{
  Set set = getCycleSet();
  set.remove(instance);
  if (set.size() == 0)
    cycleSet.remove();
}

ここで明らかな何かを見逃したのか、追加のダウンロードなどが必要なのか、誰かが知っていますか?

4

2 に答える 2

0

Thread と ThreadLocal のコードを調べました。アプリケーションを実行するために使用しているコマンドラインを少なくとも制御できる場合は、Java 1.3 の Thread と Java 1.5 の Thread をマージした特別なバージョンの Thread を作成してみることができると思います: スレッドローカルサポートを追加します。

次に、ThreadLocal 自体を少し修正します。一度使用されたジェネリックと AtomicInteger を削除します。

これら 2 つのクラスを作成する jar を作成し、アプリケーションの実行時にブートストラップ クラスパスに配置します。

そして、たくさんの幸運を。運が良ければ、これはおそらくうまくいくでしょう。

于 2011-08-03T15:48:06.847 に答える