2

我将 weka 用于 C#,并尝试使用 IKVM 将 weka.jar 移植到 c#-dll 中。该教程可以在这里找到。

现在,这是我在binC# 程序目录中得到的内容:

weka.dll -- 由 IKVM 生成

IKVM.OpenJDK.Core.dll——来自 IKVM 库

JVM.dll——来自 IKVM 库

并且 java/bin 在我的 PATH 变量中。

但是程序在

weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader("iris.arff"));

并且错误是在初始化 java.io.File

我认为这是因为 C#/bin 中缺少一些 dll

我可以通过将与 IKVM 和 Java 相关的每个 dll 复制到 C#/bin 目录中来解决它。然而它是如此丑陋。

现在我的问题来了:Java ==IKVM==> C#程序确实需要哪些运行时库?

更新

我将所有相关的内容都复制到了 C#/bin 中,并且成功了。

但请相信我,我不想这样做。

4

1 回答 1

2

如果没有您,您永远无法回答您的程序需要哪些 Java/IKVM 部分的问题。你是唯一知道你的程序的人。一个小程序需要大约 50% 的 IKVM dll。这是因为 Java 中的依赖关系非常大。

最小值是 IKVM.OpenJDK.Core.dll 和 IKVM.Runtime.dll。但我不会逐个添加 dll。否则我会逐步删除它。您可以使用 dll 文件名或 Ilspy 来查看您可能不需要哪个 dll。

以下是一些很少使用的和使用它的。这可以给你一个提示:

  • IKVM.OpenJDK.Tools.dll - Java 编译器
  • *.exe - 不同的工具
  • IKVM.OpenJDK.Jdbc.dll - SQL 和数据库 API
  • IKVM.OpenJDK.Corba.dll - Corba
  • IKVM.OpenJDK.Beans.dll - 普通的旧 Bean
  • ikvm-native-win32-*.dll, JVM.dll, IKVM.Runtime.JNI.dll - 原生的东西,如果你的 Java 代码已经使用了一个 dll
  • IKVM.OpenJDK.Naming.dll - LDAP、DNS 等命名服务
  • IKVM.AWT.WinForms.dll、IKVM.OpenJDK.SwingAWT.dll - 图像、字体、GUI
于 2013-05-30T18:51:56.450 回答