- 网站首页
- 一个简单的例子:
1) 从这里下载binaries,然后解压缩.
https://sourceforge.net/projects/jni4net/files/
2) 创建一个.net的console application.
3) 讲lib目录中的jni4net.n-0.8.8.0.dll和jni4net.j-0.8.8.0.jar分别拷贝到单独的目录和根目录.
4) 在项目中添加jni4net.n-0.8.8.0的引用
5) 在Program.cs中加入如下的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
using java.io; using java.lang; using java.util; using net.sf.jni4net; using net.sf.jni4net.adaptors;
namespace Jni4NetTest2 { class Program { static void Main(string[] args) { var setup = new BridgeSetup(); setup.Verbose = true; setup.AddAllJarsClassPath("./");
// create bridge, with default setup // it will lookup jni4net.j.jar next to jni4net.n.dll Bridge.CreateJVM(new BridgeSetup() { Verbose = true }); //Bridge.RegisterAssembly(typeof(jni).Assembly);
// here you go! java.lang.System.@out.println("Hello Java world!"); TestNotesExporterInJava();
Console.ReadLine(); }
} }
|
这个程序运行起来后,就会打印出Hello Java world!的字样.
- 上面简单的例子只是使用了jni4net自带的库,如果使用其他的.jar库,就需要使用proxygen工具来生成proxy类.
如果某个软件支持java接口, 想用里面的某个jar文件的时候,就用如下的命令来生成:
"C:\jni4net-0.8.8.0-bin\bin\proxygen.exe" "C:\Program Files (x86)\<软件目录>[\<子目录>]\<需要的jar文件名>.jar" -wd "<输出目录>" |
上面用到的jar文件如果依赖于其他的jar文件,运行命令的时候会报类似如下的错误:
Can't load class <namespace>[.<sub namespace>].<class name> |
这个时候就需要使用-cp或者dp参数.
比如:
"C:\jni4net-0.8.8.0-bin\bin\proxygen.exe" "C:\Program Files (x86)\<软件目录>[\<子目录>]\<需要的jar文件名>.jar" -wd "<输出目录>" –cp “c:\software1\libs”,”c:\software2\aa.jar” |
-cp参数的写法可能仿照这里的就可以
https://www.ibm.com/developerworks/lotus/library/ls-Java_access_pt1/index.html
Dp参数还没有研究明白.
- 官网给的例子:
https://github.com/jni4net/jni4net/wiki/Calling-Java-in-C%23
- 官网给出的proxy的proxygen用法
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步