IKVMを使用してC#からJARファイルを実行する必要があります。JARには、コンストラクターがパラメーターの1つとして列挙型をとるクラスが含まれています。私が直面している問題は、IKVMを使用してC#でこのクラスのインスタンスを作成しようとすると、IllegalArgumentExceptionがスローされることです。
Java列挙型:
public class EventType{
public static final int General;
public static final int Other;
public static int wrap(int v);
}
Javaクラス:
public class A{
private EventType eType;
public A(EventType e){
eType = e;
}
}
C#の使用法:
/* loader is the URLClassLoader for the JAR files */
java.lang.Class eArg = java.lang.Class.forName("A", true, loader);
/* Instantiate with the underlying value of EventType.General */
object obj = eArg.getConstructor(EventType).newInstance(0);
eArgは、forName(..)メソッドによって正しくロードされます。ただし、eArgクラスのインスタンス化は、IllegalArgumentExceptionをスローします。メソッドが実装されていないことを指定するexception.TargetSite.CustomAttributesを除いて、例外にはメッセージはありません。また、コンストラクター引数をjava.lang.Fieldオブジェクトとして渡そうとしましたが、それでも同じ例外が発生しました。
誰かが私が間違っているかもしれないことについて何か提案がありますか?