6

我想在我的 .NET 项目中使用Java 工具(称为 Mallet) http://mallet.cs.umass.edu/download.php 。

为了将此工具转换为 .NET 库,我尝试使用 Apache Ant 在单个 .jar 文件中构建它。我已经按照上面链接中的说明完成了所有操作。

  1. 从 Mercurial 存储库下载开发者版本。

  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")

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

这很不寻常,我在 Google 中找不到任何相同的问题。

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

4

2 回答 2

7

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

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

我的建议:使用较旧的 JDK 编译 Mallet,或者至少使用设置为的-sourceand-target开关6(以确保它是为 Java 6 编译的)。

于 2011-10-24T12:01:29.293 回答
6

IKVM 的 FYI v8.1(目前为 RC)支持 Java 8:

http://weblog.ikvm.net/2015/08/26/IKVMNET81ReleaseCandidate0.aspx http://sourceforge.net/p/ikvm/mailman/message/34502991/

于 2015-12-23T21:40:28.033 回答