私は Java に関する知識がほとんどないため、問題を誤解している可能性があります。
私は Java の Gephi API に取り組んでおり、IKVMC を使用して dll を操作しました。
Gephi doc https://github.com/gephi/gephi/wiki/How-to-manipulate-Graphで説明されているように、空のグラフを作成しようとしました
C#で私はこれを試しました:
ProjectController pc;
pc = (ProjectController)org.openide.util.Lookup.getDefault().lookup(typeof(ProjectController));
2 行目に次のエラーが表示されます。
Exception non gérée : System.TypeLoadException: La method 'thenComparing' du type 'org.openide.util.lookup.ALPairComparator' de l'assembly 'gephi-toolkit, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 'n'a pas d'implémentation. org.openide.util.lookup.AbstractLookup.getPairsAsLHS() à org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(Template ) à org.openide.util.lookup.AbstractLookup.lookupItem(Template template) à org.openide. util.lookup.AbstractLookup.lookup(Class clazz) à org.openide.util.Lookup.getDefault() à myproject ....
英語では、thenComparing() メソッドには org.openide.util.lookup.ALPairComparator 型の実装がないことがすぐにわかります。
私はいくつかの調査を行い、逆コンパイルされたdllで、エラーはここにあるようです
internal LinkedHashSet getPairsAsLHS()
{
AbstractLookup.Storage storage = this.enterStorage();
LinkedHashSet result;
try
{
Enumeration enumeration = storage.lookup(ClassLiteral<Object>.Value);
TreeSet.__<clinit>();
TreeSet treeSet = new TreeSet(ALPairComparator.DEFAULT);
thenComparing は「デフォルト」のメソッドであることがわかりました。Java 8 では、間違いを言わなければ、デフォルトのメソッドがすでに実装されています。
私のプロジェクトには、IKVM の java.util ライブラリへの参照があります。
したがって、デフォルト メソッドの実装が ikvm を使用して C# で適切にサポートされていないか、thenComparing がタイプ internal ALPairComparator を適切にサポートしていないことが問題である可能性があります。
それがどこから来たのかはよくわからないので、手がかりがあれば歓迎します。質問がある場合、またはさらに精度が必要な場合は、私に尋ねてください。
ご協力ありがとうございました。
編集: Gephi は Java 1.8 と互換性がなく、Java 1.7 と互換性があることに気付きました
EDIT2: dll 内の org.openide.util パッケージを、IlSpy を使用する Java 1.7 の以前のバージョンに置き換えようとしています。