3

我有一个简单的 Java 类jniBridge.Calculator,它有一个简单的方法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设置为输出文件夹,以便它与文件。我还添加了对 Jni4Net 主库文件的引用,并将其主 JAR 文件 , 复制到同一目录中。添加到转储中,我还添加了我开始使用的原始 JAR 文件。.JARCopy Always.EXEjni4net.n-0.8.6.0.dlljni4net.j-0.8.6.0.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

任何帮助请!

4

1 回答 1

-1

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

于 2016-01-18T23:25:14.080 回答