![](/img/trans.png)
[英]com.sun.jna.Pointer cannot be cast to com.sun.jna.platform.win32.WinDef.LPARAM
[英]Can not use JNA: com.sun.jna.Library is not accessible
I am trying to use JNA, because I want to work with a.dll that was written in c++ and the rest of my code is in Java. 但是,如果我尝试导入 JNA 类 Eclipse 声称“类型 com.sun.jna.Library 不可访问”。
我的 IDE 似乎看到 JNA 在我的库中,因为当我键入“import com.sun.j”时,它会将.jna 和 .Z68995FCBF432492D40484D04A9D2 文件中的其他包
我创建了一个单独的项目来查看它是否在那里工作,但它只是不起作用。
I have downloaded the latest.jar (jna-5.8.0.jar and jna-platform-5.8.0.jar) files from the jna Github (https://github.com/java-native-access/jna/blob/ master/README.md ),我已通过项目将它们添加到 class 路径->配置构建路径->添加外部 JARs
我将 Eclipse 与 javaSE-13 一起使用。
package Testtest;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
Package 结构:
Test
|-- src
| |-- TestTest
| | |-- Main.java
| |-- module-info.java
|-- JRE System Library [JavaSE-13]
|-- Referenced Libraries
|-- jna-5.8.0.jar
|-- jna-platform-5.8.0.jar
正如评论中提到的@greg-449 ,您有一个模块化项目,由您的src
目录(包根目录)中存在module-info.java
文件表示。
您在这里有三个选择:
module-info.java
JRE 8 或更早版本上运行(或将您的项目兼容级别更改为)module-info.java
模块描述符,以便在没有模块的情况下运行程序module-info.java
)以添加指令requires com.sun.jna
。 如果您使用的是 jna jna-platform
,则还requires com.sun.jna.platform
。
Structure
或PointerType
),您将需要在项目中open
包含这些子类到com.sun.jna
的任何包,因为它们使用反射来访问您的子类。 (这里有多个选项,但open TestTest to com.sun.jna
是最接近 JDK8 的行为。)。 我知道这只是一个测试设置,但考虑一个反向 DNS 样式的 package 名称和模块描述符。jna-jpms-5.8.0
和jna-platform-jpms-5.8.0
JARs 作为依赖项,因为它们有自己的模块描述符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.