我想在我们的java应用程序中使用dll文件,我正在使用jni4net,当我尝试为我们的Dll创建代理时它会抛出
System.NullReferenceException: Object reference not set to an instance of an object.
at net.sf.jni4net.proxygen.model.Repository.RegisterType(Type type, TypeRegistration registration)
at net.sf.jni4net.proxygen.model.Repository.RegisterType(Type type)
at net.sf.jni4net.proxygen.model.Repository.RegisterType(Type type, TypeRegistration registration)
at net.sf.jni4net.proxygen.model.Repository.Register()
at net.sf.jni4net.proxygen.Program.Work(String[] args)
at net.sf.jni4net.proxygen.Program.Main(String[] args)
答案 0 :(得分:1)
您的代码是否使用泛型?根据Proxygen文档,该工具无法为包含泛型类型的方法签名生成桥接包装。
我遇到了相同的错误消息,并且在公共方法签名中使用泛型结果证明是问题所在。我使用引用here的Proxygen分支解决了这个问题。
编辑:direct link到分支机构。
或者,您可以尝试使用非泛型数据结构,或者将通用数据结构包装在非泛型类中(例如,将List<MyObj>
包裹在MyObjList
类中)并放置非不同项目中的泛型类。