1

Java で記述された API を IKVM を使用して .net dll に変換しましたが、これまでのところ問題はありません。

基本的に、バックグラウンドで xml を使用して一部の Web サービスにアクセスします。API はサード パーティであり、ソース コードにはアクセスできません。APIはCastorを使用して(私は信じています)xmlをオブジェクトにバインドします。

しかし、API のより便利な部分を使い始めたとき、キャスターに問題が発生しました。私の特定のエラーは次のとおりです。

「ネストされたエラー: org.exolab.castor.mapping.MappingException: クラスが見つかりませんでした ...」

上記のクラスは API の一部です。ウェブを精査すると、キャスターとは別のアセンブリにあるため、キャスターはクラスにアクセスできないようです。

私の問題は、Java のクラスローダーについて十分に理解していないことです。おそらく、IKVM について十分に理解していないため、これを整理することもできません。

IKVM を Castor (または Java クラスでリフレクションを使用する可能性のある他のライブラリ) と一緒に使用し、以前にこの問題に遭遇した人はいますか?

4

1 に答える 1

2

驚いたことに、誰もこれに対する回答を持っていなかったので、質問を ikvm メーリング リストに投稿したところ、回答がありました。

答えは確かに、Castor ライブラリと私が使用していたサード パーティの API コードの分離に関係しています。

私が使用した解決策は、オプションを追加することでした:

-classloader:ikvm.runtime.AppDomainAssemblyClassLoader

ikvmc を使用して Castor をコンパイルする場合。

これにより、Castor は第 3 部分の API と通信できるようになり、Web サービスからレポートを取得できるようになりました。

于 2009-05-21T11:39:28.327 に答える