gpt4 book ai didi

java - 在 WebSphere 6.1 上使用 ant/jenkins 生成 EAR 的类转换异常

转载 作者:行者123 更新时间:2023-12-01 05:36:40 25 4
gpt4 key购买 nike

在将作为 Jenkins 上运行的 ant 构建脚本的一部分生成的 Ear 部署到 Websphere 6.1 后,我遇到了运行时类转换异常。转换类异常出现在某些 DAO 方法中,这些方法将从 SQL 查询返回的对象转换为特定类。

如果我从 Eclipse (RAD) 中生成 EAR,则不会发生类转换异常,并且将 jenkins/ant 生成的ear 中的类文件与 Eclipse 中的类文件进行比较会显示不同的文件大小和内容。

我试图让 ant 使用 Webspehre 6.1 提供的 JDK 执行 javac。所以我在 Jenkins 中设置了一个多配置项目来使用 IBM JDK。我假设这使得 ant javac 任务使用这个 jdk。

这是我的 ant javac 任务:

    <javac srcdir="${src.dir}" destdir="${build.dir}"  debug="true"  debuglevel="vars,lines,source" target="1.5">
<classpath refid="master-classpath" />
</javac>

我现在唯一能想到的就是确保ant确实使用这个jdk运行,而不是仅仅使用这个jdk执行javac。有办法查吗?

[编辑]我已更改 ant.bat 文件以输出 JAVA_HOME,并且它确实在我在 jenkins 中指定的文件下运行。

[编辑2]

好的,终于找到问题原因了:

在 Hibernate DAO 方法中,我们有一些(糟糕的)代码,如下所示:

String sql = "select {entity.*}, {entity2.*}, ...";
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
...
List<Entity> queryResult = query.list();
for (Object row : queryResult) {
Object[] arr = (Object[])row;
Entity entity - (Entity)arr[0];
Entity2 entity2 - (Entity2)arr[1];
}

你能发现小学生的错误吗?

queryResult不是List<Entity>但是一个List<Object[]> - for (Object row : queryResult) 上发生类转换异常

所以,现在我的问题是 - 类型删除发生了什么?

Eclipse 使用什么编译器选项允许它在运行时忽略类转换这样的错误?

最佳答案

有可能不是 JDK,而是其他库不同。值得检查。

关于java - 在 WebSphere 6.1 上使用 ant/jenkins 生成 EAR 的类转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com