2012-01-22 17 views
0

Javaバージョン1.5を実行しているWebsphere Platform 6.1を使用して、Windows XPマシン(バージョン5.1ビルド2600サービスパック3)でローカルにテストしたときに正しく動作するアプリケーションをデバッグしようとしています。説明できないArrayStoreException - コードまたは構成の問題

このアプリケーションは、Javaバージョン1.5.0_24を実行しているUNIXサーバー(SunOS、バージョン5.10)に配備すると、ArrayStoreExceptionをスローします。

私はこれが環境設定上の問題であると考えていますが、(ローカルでの作業以外は)設定上の問題であるとは思われません。

トラブルシューティングのためにコードに追加されたのログメッセージは以下のとおりです。ログに記載されているように、コードプロファイルオブジェクトをプロファイルの配列に追加しようとしています。なぜそれが動作しないのか分かりません。

CollectionUtility.searchMapmsg = ZZZZZキャッチでArrayStoreExceptionのZZZZZ

CollectionUtility.searchMap | MSG = ZZZZZタイプ[Lcom.process.im.profile.impl.Profileの配列にリスト項目を追加することができません。 ZZZZZ

CollectionUtility.searchMap | MSG = ZZZZZリスト[0]クラスcom.process.im.profile.impl.Profile、のtoString(IS)= com.process.im.profile.impl.Profile MID = 4、mLongName = ZZZZZ以下

をccountingすることは、私はシンプルな何かが欠けていることも知っているエラー

public static Object[] searchMap(Map m, Object[] keys, Object[] a) 
{ 
    if (keys != null && a != null) 
    { 
     List<Object> l = new ArrayList<Object>(keys.length); 

     searchMap(m, keys, l, true, null); 

     try 
     { 
      a = l.toArray(a); 

     } 
     catch (ArrayStoreException eArrayStore) 
     { 
      Log.warning("CollectionUtility.searchMap", "ZZZZZ Caught ArrayStoreException ZZZZZ", 0); 

      if(l==null) 
      { 
       Log.warning("CollectionUtility.searchMap", "ZZZZZ Core CollectionUtility ZZZZZ null list.", 0); 
      } 
      else 
      { 
       for(int i=0; i<l.size(); i++) 
       { 
        Object bug = l.get(i); 

        if(bug==null) 
        { 
         Log.warning("CollectionUtility.searchMap", "ZZZZZ List[" + i + "] is null ZZZZZ", 0); 
        } 
        else 
        { 
         if (a!=null && !a.getClass().getName().equals(bug.getClass().getName())) 
         { 
          Log.warning("CollectionUtility.searchMap", "ZZZZZ Unable to add list item to Array of type " + a.getClass().getName() + " ZZZZZ", 0); 

          Log.warning("CollectionUtility.searchMap", "ZZZZZ List[" + i + "] is class " + bug.getClass().getName() + ", toString()=" + bug.toString() + " ZZZZZ", 0); 
         } 

        } 
       } 
      } 

      throw eArrayStore; 

     } 
    } 

    return a; 
} 

を生産しているJavaコードですが、私は次のチェックするかわからないんだけど。あなたのアイデアがあれば教えてください。すべての助けが大歓迎です。ありがとう!

+0

1.メソッド引数の値(a = l.toArray(a);)を変更することはお勧めできません。 2. searchMap(m、keys、l、true、null)コードを投稿してもよろしいですか? – aviad

+0

私はあなたについてよくわかりませんが...このコードを数回読んだあと、私は答えが分かりにくいと思います...私にあなたに尋ねましょう:パラメータa null値が含まれていますか?また、この 'a.getClass()。getName()。equals(bug.getClass()。getName())'は、 'Object'が' Object'と同じではないので常に 'false'を返します[] '。 –

+0

私に戻ってくれてありがとう!大変感謝しています。私は、リストの1つの要素と配列の型との比較が決して等しくないので、nullをチェックするだけでログを表示できたことに同意します。 ArrayStoreExceptionがスローされている理由はまだ分かりませんが、このコードがすべてのUNIXサーバーで問題を引き起こしていないことがわかりました。負荷分散されたサーバーを使用しているUNIX環境でのみ表示されます。私はもっ​​と知ることができるかどうかを見極めるつもりです。あなたがこれまでにこのようなことに遭遇した場合は、私に知らせてください。 – Laura

答えて

0

もう1つ、Object配列のクラスをObjectと比較しています。私はあなたがやろうとしていることではないと確信しています。

関連する問題