java - JNI4Net C# 到 Java

标签 java c# .net jni4net

我有一个名为 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 文件到 Copy Always 到输出文件夹,以便它与 .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);

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

Unhandled Exception: net.sf.jni4net.jni.JNIException: Can't load java class for jnibridge.Calculator from classLoader sun.misc.Launcher$AppClassLoader@e39a3e ---> java.lang.ClassNotFoundException: jnibridge.Calculator

请帮忙!!

最佳答案

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

关于java - JNI4Net C# 到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111051/

相关文章:

c# - 如何使用 Bootstrap 添加事件样式

c# - 为什么我的 C# 方法没有被调用?

java.lang.IllegalArgumentException : Object would be serialized to `null` : Android 异常

java - 从 YAML 文件自动配置 log4j 2 时出现问题

java - 使用 Spring 和 Jackson 将 Json 数组解析为 Pojo?

c# - MonoTouch 应用程序在模拟器中运行,但不在设备上运行

c# - 将 Java 转换为 C# 问题

c# - 如何在C#中获取MP3的长度

c# - Storyboard应用于许多元素

java - 在Java中同时实现Map和List接口(interface)?