1

我想在我们的 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)
4

1 回答 1

1

您的代码是否使用泛型?根据 Proxygen 文档,该工具无法为包含泛型类型的方法签名生成桥接包装器。

我遇到了同样的错误消息,结果证明在公共方法签名中使用泛型是问题所在。我通过使用此处引用的 Proxygen 分支解决了这个问题。

编辑:直接链接到分支。

或者,您可以尝试使用非泛型数据结构,或者将泛型数据结构包装在非泛型类中(例如,包装List<MyObj>在一个MyObjList类中)并将这些非泛型类放在不同的项目中。

于 2016-01-13T12:20:32.097 回答