【问题标题】:JNI4Net C# To JavaJNI4Net C# 到 Java
【发布时间】:2013-11-21 01:59:53
【问题描述】:

我有一个名为jniBridge.Calculator 的简单Java 类,它有一个简单的方法Add(int a, int b)。使用 eclipse 构建项目后,我将项目导出为 JAR 文件。

然后我在 JAR 文件上调用 proxygen,这产生了一个名为 clr 的文件夹和另一个名为 jvm 的文件夹,其中分别包含 C# 和 Java 代理。 Proxygen 还创建了一个build.cmd 和一个.xml 文件。

之后我运行了build.cmd,它生成了一个.DLL.JAR 文件。

现在我想在 C# 中使用这些或其他任何东西,所以我将 .DLL 和 .JAR 文件复制到 .NET 项目文件夹中,并添加了对 .DLL 文件的引用,并将 .JAR 文件设置为 @987654332 @ 到输出文件夹,使其与.EXE 文件一起存在。我还添加了对 Jni4Net 主库文件 jni4net.n-0.8.6.0.dll 的引用,并将其主 JAR 文件 jni4net.j-0.8.6.0.jar 复制到同一目录中。添加到转储中,我还添加了我开始使用的原始 JAR 文件。

在 C# Program.cs 中,我执行以下操作:

BridgeSetup bs = new BridgeSetup();
bs.AddAllJarsClassPath(".");

Bridge.CreateJVM(bs);
Bridge.RegisterAssembly(typeof(jniBridge.Calculator).Assembly);

但是,最后一次调用失败并出现以下异常:

未处理的异常:net.sf.jni4net.jni.JNIException:无法从 classLoader sun.misc.Launcher$AppClassLoader@e39a3e 加载 jnibridge.Calculator 的 java 类 ---> java.lang.ClassNotFoundException:jnibridge.Calculator

请帮忙!!

【问题讨论】:

    标签: java c# .net jni4net


    【解决方案1】:

    我遇到了这个问题,并修复了它在我的 Java 代码中将包名称设置为小写(以及对 C# 工具中命名空间的引用)。在您的情况下,您可以尝试确认包名称(确切地说)是 jnibridge(不是 JniBridge 或其他任何名称)。

    【讨论】:

      猜你喜欢
      • 2018-02-20
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多