使用IKVMC将Java转换为.NET库 - 警告IKVMC0108:不是类文件

Val*_* P. 5 .net java ant ikvm

有一个Java工具(它叫做Mallet) http://mallet.cs.umass.edu/download.php 我想在我的.NET项目中使用它.

为了首先将此工具转换为.NET库,我尝试使用Apache Ant在单个.jar文件中构建它.我已完成了与上面链接中的说明相对应的所有内容.

  1. 从Mercurial存储库下载Developer Release.

  2. 下载Apache Ant,安装JDK,设置JAVA_HOME var以使用Apache Ant.

  3. 使用Ant我已经构建了单个mallet.jar文件.

然后我想使用IKVMC将mallet.jar转换为.NET库.在转换时,我收到了很多警告,例如:

Warning IKVMC0108: not a class file "cc/mallet/util/tests/TestPriorityQueue$1.cl
ass", including it as resource
    (class format error "51.0")
Run Code Online (Sandbox Code Playgroud)

尽管有这些警告,但是创建了mallet.dll.但是当我尝试从我的.NET项目中引用它时,它看起来是"空的".它没有任何类或命名空间.我不会忘记引用IKVM.OpenJDL.Core.

这是不寻常的,我在谷歌找不到任何相同的问题.

我认为这个问题出现在警告中.而且我从未使用过Ant,而且我并不完全理解所有过程.

Joa*_*uer 6

Java 7引入了类格式版本51.

IKVM很可能还不支持该版本,并且您引用的文件名(cc/mallet/util/tests/TestPriorityQueue$1.class)指向一个匿名内部类,TestPriorityQueue肯定是库正常工作所必需的.

我的建议:用槌旧的JDK或编译至少使用-source-target开关设置为6(以确保它的编译为Java 6).