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

时间:2011-10-24 11:56:11

标签: java .net 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文件。

  4. 然后我想使用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")
    

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

    这是不寻常的,我在谷歌找不到同样的问题。

    我认为这个问题出现在警告中。而且我从未与Ant合作过,而且我并不完全了解所有过程。

2 个答案:

答案 0 :(得分:6)

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

IKVM很可能还不支持该版本,并且您引用的文件名(cc/mallet/util/tests/TestPriorityQueue$1.class)指向匿名内部类TestPriorityQueue当然需要图书馆工作正常。

我的建议:使用较旧的JDK或至少使用设置为-source的{​​{1}}和-target开关编译Mallet(以确保它的编译为Java 6)。

答案 1 :(得分:6)