使用Ant脚本编译源时的Runtime-Class强制转换异常

时间:2012-03-02 05:43:48

标签: java ant compilation runtime-error

我正在使用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脚本编译源代码时是否有任何问题。需要帮助找出这种情况背后的原因。

谢谢!

1 个答案:

答案 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