JNI4Net C#到Java
我有一个名为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
to output folder so so它存在于.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);
但是,上次调用失败,并出现以下exception:
未处理的exception:net.sf.jni4net.jni.JNIException:无法从classLoader加载jnibridge.Calculator的java类sun.misc.Launcher$AppClassLoader@e39a3e —> java.lang.ClassNotFoundException:jnibridge.Calculator
请帮忙!!
我遇到了这个问题,并修复了它在我的Java代码中以小写forms设置包名(以及C#harness中对命名空间的引用)。 在您的情况下,您可以尝试确认包名称(确切地说)是jnibridge(不是JniBridge或其他任何东西)。