是否可以使用IKVM / JNI4Net等工具从C#代码执行java应用程序(依赖于许多第三方库)?

时间:2015-05-07 12:57:05

标签: ikvm jni4net

我想从c#代码调用java API。我的Java API是一个与多个第三方库捆绑在一起的jar文件。我正在尝试使用IKVM和JNI4Net。我能够调用几个java函数,但是当代码依赖于第三方库时,它会显示错误:在dll中发生NoClassDefFoundError'。我的问题是可以使用这种基于JNI的工具从C#代码执行java应用程序(它依赖于许多第三方库)吗?

2 个答案:

答案 0 :(得分:0)

如果不是jni4net专家,我有一些经验。 使用jni4net,您需要使用BridgeSetup并调用其AddClassPath()方法之一来构建包含第三方库的类路径。

例如,像这样:

namespace My.Lib
{
  using System;
  using net.sf.jni4net;

  public static class MyClass
  {
    public static void Init()
    {
      // create the setup and register the Java classpath
      BridgeSetup bridgeSetup = new BridgeSetup(true);
      bridgeSetup.AddClassPath("lib/myLib1.jar");
      bridgeSetup.AddClassPath("lib/myLib2.jar");
      // add others ...

      // check the actual classpath we got
      Console.WriteLine("registered classpath : ");
      foreach (String s in bridgeSetup.JVMCLassPath) Console.WriteLine(s);

      // now create the JVM
      Bridge.CreateJVM(bridgeSetup);
    }
  }
}

答案 1 :(得分:0)

使用IKVM,我可以通过将Java项目构建到单个JAR中来实现这一点。 我使用Netbeans作为我的IDE,并按照本文中的步骤操作 http://www.oracle.com/technetwork/java/javamail/single-jar-141905.html