我有一个简单的 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 文件。.JAR
Copy Always
.EXE
jni4net.n-0.8.6.0.dll
jni4net.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
任何帮助请!