格菲';s java默认方法未在C#中使用dll库中的ikvm实现
我对java知之甚少,因此可能误解了我的问题: 我正在用Java编写GephiAPI,我用IKVMC编写了一个dll 我试图创建一个空图,如Gephi文档中所述 在C#中,我尝试了以下方法:格菲';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:
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
似乎工作正常