我正在尝试通过运行java 1.5版的Websphere Platform 6.1在Windows XP计算机(版本5.1 build 2600 Service Pack 3)上进行本地测试时,调试正常运行的应用程序。
当应用程序部署到运行java版本1.5.0_24的UNIX服务器(SunOS,版本5.10)时,此应用程序抛出ArrayStoreException。
我倾向于这是一个环境配置问题,但(除了在本地工作)我似乎无法确认这是一个配置问题。
以下是添加到代码中的日志消息 以进行故障排除。如日志中所述,代码正在尝试将 Profile 对象添加到 Profile 类型的数组中。我不明白为什么那不起作用。
CollectionUtility.searchMapmsg = ZZZZZ Caught 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;
}
我知道我可能会遗漏一些简单的东西,但我不确定接下来要检查什么。如果您有任何想法,请告诉我。非常感谢任何和所有的帮助。谢谢!
答案 0 :(得分:0)
对于一个,您正在将Object数组的类与Object进行比较。我很确定这不是你打算做的。