格菲';s java默认方法未在C#中使用dll库中的ikvm实现

格菲';s java默认方法未在C#中使用dll库中的ikvm实现,java,c#,ikvm,gephi,default-method,Java,C#,Ikvm,Gephi,Default Method,我对java知之甚少,因此可能误解了我的问题: 我正在用Java编写GephiAPI,我用IKVMC编写了一个dll 我试图创建一个空图,如Gephi文档中所述 在C#中,我尝试了以下方法: ProjectController pc; pc = (ProjectController)org.openide.util.Lookup.getDefault().lookup(typeof(ProjectController)); 在第二行,我得到以下错误: 异常非gérée:

我对java知之甚少,因此可能误解了我的问题:

我正在用Java编写GephiAPI,我用IKVMC编写了一个dll

我试图创建一个空图,如Gephi文档中所述

在C#中,我尝试了以下方法:

ProjectController pc;
            pc = (ProjectController)org.openide.util.Lookup.getDefault().lookup(typeof(ProjectController));
在第二行,我得到以下错误:

异常非gérée:System.TypeLoadException:La méthode'then比较'duty pe'org.openide.util.lookup.ALPairComparator'de l'assembly'gephi工具包,版本 ion=0.0.0.0,Culture=neutral,PublicKeyToken=null‘n’a pas d’implementation。 áorg.openide.util.lookup.AbstractLookup.getPairsalhs() áorg.openide.util.lookup.MetaInfServicesLookup.beforeLookup(模板) áorg.openide.util.lookup.AbstractLookup.lookupItem(模板) áorg.openide.util.lookup.AbstractLookup.lookup(类clazz) áorg.openide.util.Lookup.getDefault() 我的项目

在英语中,它很快就会说ThenComparating()方法没有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);
internallinkedhashset getpairsalhs()
{
AbstractLookup.Storage Storage=this.entrestorage();
LinkedHashSet结果;
尝试
{
枚举=storage.lookup(ClassLiteral.Value);
树集;
TreeSet TreeSet=新的TreeSet(ALPairComparator.DEFAULT);
我发现比较是一种“默认”方法,在Java8中,如果我没有说错误的话,默认方法已经实现了

我的项目引用了IKVM的java.util库

因此,可能是C#with ikvm不支持默认方法的实现,或者比较不支持类型内部ALPairComparator

诚恳地说,我不太清楚它是从哪里来的,所以任何线索都会受到欢迎。如果你有任何问题或需要更多的精确性,请问我

谢谢你的帮助

编辑:我注意到Gephi与Java1.8不兼容,但与Java1.7兼容

EDIT2:我正试图用java 1.7上的旧版本替换dll中的org.openide.util包,并使用IlSpy解决它

它似乎是与Java8不兼容的Gephi,所以我使用了用于Java7的IKVM7版本系列(可从nuget获得)

我在IKVM7.2和7.4之间遇到了一些问题,它希望在我使用7.2时加载7.4

最后,我在sourceforge上使用了带有IKVM 7.2的dll(使用指向java 7文件夹的Windows环境路径),并在Visual Studio项目的参考资料中使用了nuget的IKVM 7.4

似乎工作正常