我正在使用ant和jdk-1.5_10来编译我的源代码并创建一个jar文件。并且创建jar时没有任何编译错误。 但是我在运行时遇到以下代码 - Class Cast Exception - > java.lang.Long无法强制转换为[Ljava.lang.Object (注意 - 我没有包括完整的代码,只有我怀疑的代码)
void someFunction(List<Object[]> result){
Object[] resultObject = new Object[1];
for (Object resultSet : result) {
resultObject[0] = resultSet;
}//end of for
}//end of function
我在第3行获得了一个异常(对于(Object resultSet:result))。 但是当我替换包含使用eclipse编译的上述函数的类时,它会执行而没有错误。 Eclipse也在使用jdk-1.5_10
我无法找出原因。当我使用ant脚本编译源代码时是否有任何问题。需要帮助找出这种情况背后的原因。
谢谢!
答案 0 :(得分:0)
当您从命令行运行ant生成的jar时,您将传递给“someFunction”元素列表,其中一个元素是Long,并且您的程序期望它是一个Object [] 。如果您尝试使用相同的输入,两种情况(命令行和eclipse)都应该这样做。
但是,我认为你没有正确迭代,列表中的每个对象都是一个数组(你正在使用对象):
void someFunction(List<Object[]> result){
Object[] resultObject;
for (Object[] resultSet : result) {
System.out.println(resultSet); // Is an Object[]
resultObject = resultSet;
}//end of for
}//end of function