Jenkins上で実行されるAntビルドスクリプトの一部として生成された耳をWebsphere 6.1にデプロイした後、キャストクラスの例外は、SQLクエリから特定のクラスに返されたObjectをキャストするDAOメソッドの一部です。ant/jenkinsを使用したクラスキャスト例外がWebSphere 6.1のEARを生成しました
私がEclipse(RAD)内からEARを生成する場合、クラスキャスト例外は発生せず、jenkins/ant生成クラスのクラスファイルとEclipseのものとを比較すると、ファイルサイズと内容が異なります。
私は、Webspehre 6.1で提供されているJDKを使ってantにjavacを実行させようとしています。私はJenkinsでIBM JDKを使用するためのマルチ構成プロジェクトを設定しました。私は、これがant javacタスクでこのjdkを使用すると仮定しています。
<javac srcdir="${src.dir}" destdir="${build.dir}" debug="true" debuglevel="vars,lines,source" target="1.5">
<classpath refid="master-classpath" />
</javac>
私は今考えることができる唯一のことは、ちょうどこのJDKでのjavacを実行するとは対照的に、アリが実際にこのJDKで動作することを確認することです。
これは私の蟻のjavacタスクです。確認する方法はありますか?
[編集]私は、JAVA_HOMEを出力するant.batファイルを変更しました。これは、私がjenkinsで指定したものの下で動作します。私たちはこのようないくつかの(貧しい)コードを持って休止状態DAO方法で
:
[EDIT2]
OK]をクリックして、最終的には、問題の原因を見つけ
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)
にoccuringれたのですか?
Eclipseはどのようなコンパイラオプションを使用すると、実行時にクラスエラーをこのようにキャストできますか?
あなたのant buildスクリプトは、あなたのEclipseプロジェクトと同期していないようです。展開時にはどのような例外がありますか?あなたのアリビルドスクリプトは何ですか? –
アプリケーションがデプロイされて実行されますが、キャストクラスの例外は、オブジェクトを特定のクラスにキャストするDAOメソッドの一部です。 – blank
[Java配列はオブジェクトです](http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html)ので、配列の割り当て/キャストにエラーはありません。オブジェクト(ループの宣言のように)。奇妙なのは、 'query.list()'が 'List'を返さない場合、コンパイルエラーを検出できないことです。しかし、 'List 'を返すと、 'Object [] arr =(Object [])row;でClassCastExceptionが発生することは避けられません。 –
sudocode