我是Scala和Java领域的新手,所以请原谅我这个简单的问题。
在我的项目中,我想使用本机库,它是硬件设备的接口。我正在尝试编译SNA(Scala Native Access),但我做不到。
我将SNA源下载到SNA文件夹,将JNA jar下载到JNA文件夹下一张cd到D:\sna\src\com\sun\jna\java,并尝试使用以下命令进行编译:
javac-cp d:\JNA\JNA-4.0.0.jar Structure.java
它给了我以下错误:
Structure.java:1050: error: cannot find symbol
if (m.getSize() < requiredSize) {
^
symbol: method getSize()
location: variable m of type Memory
Structure.java:1287: error: cannot find symbol
StructField sf = ((Union)ref).biggestField;
^
symbol: variable biggestField
location: class Union
Note: Structure.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
国民账户体系是否得到作者的支持?是否与实际版本的JNA(4.0.0)兼容?
我正在Windows7 64位上尝试此步骤。
据我所知,只有JNA中的Structure与Scala类不兼容。因此,如果你不想修补JNA,你可以用Java重写Scala类,并将Java类(它扩展了Structure)实例传递到你的本地函数中。