2011-11-11 10 views
1

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はどのようなコンパイラオプションを使用すると、実行時にクラスエラーをこのようにキャストできますか?

+0

あなたのant buildスクリプトは、あなたのEclipseプロジェクトと同期していないようです。展開時にはどのような例外がありますか?あなたのアリビルドスクリプトは何ですか? –

+0

アプリケーションがデプロイされて実行されますが、キャストクラスの例外は、オブジェクトを特定のクラスにキャストするDAOメソッドの一部です。 – blank

+0

[Java配列はオブジェクトです](http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html)ので、配列の割り当て/キャストにエラーはありません。オブジェクト(ループの宣言のように)。奇妙なのは、 'query.list()'が 'List 'を返さない場合、コンパイルエラーを検出できないことです。しかし、 'List 'を返すと、 'Object [] arr =(Object [])row;でClassCastExceptionが発生することは避けられません。 – sudocode

答えて

0

これはJDKではなく、別のライブラリです。チェックに値する

関連する問題