Необъяснимое ArrayStoreException - проблема кода или конфигурации - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь отладить приложение, которое работает должным образом при локальном тестировании на компьютере с Windows XP (версия 5.1 сборка 2600 с пакетом обновления 3) через Websphere Platform 6.1 под управлением Java версии 1.5.

Это приложение выбрасываетArrayStoreException при его развертывании на серверах UNIX (SunOS, версия 5.10) под управлением Java версии 1.5.0_24.

Я склоняюсь к тому, что это проблема конфигурации среды, но (кроме того, что она работает локально) я могу 'Кажется, он не подтверждает, что это проблема конфигурации.

Ниже приведены сообщения журнала , которые были добавлены в код для устранения неполадок.Как отмечено в журналах, код пытается добавить объект Profile в массив типа Profile .Я не понимаю, почему это не сработает.

CollectionUtility.searchMapmsg = ZZZZZ Пойманный ArrayStoreException ZZZZZ

CollectionUtility.searchMap | msg = ZZZZZ Невозможно добавить элемент списка в массив типа [Lcom.process.im.profile.impl.Profile;ZZZZZ

CollectionUtility.searchMap | msg = ZZZZZ List [0] является классом com.process.im.profile.impl.Profile, toString () = com.process.im.profile.impl.Profile mId = 4, mLongName = ccounting ZZZZZ

Ниже приведен Java-код , который выдает ошибку

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;
}

Я знаю, что, возможно, упускаю что-то простое, но я не уверен, что проверить дальше.Если у кого-то из вас есть идеи, пожалуйста, дайте мне знать.Любая помощь очень ценится.Спасибо!

1 Ответ

0 голосов
/ 23 января 2012

Ну, во-первых, вы сравниваете класс массива Object с Object.Я почти уверен, что это не то, что вы намереваетесь сделать.

...