vic*_*sch 5 java jna java-platform-module-system java-module
我正在尝试使用 JNA,因为我想使用用 C++ 编写的 .dll,而其余代码是用 Java 编写的。但是,如果我尝试导入 JNA 类,Eclipse 会声明“com.sun.jna.Library 类型不可访问”。
我的 IDE 似乎发现 JNA 以某种方式存在于我的库中,因为当我输入“import com.sun.j”时,它会向我推荐 .jna 和 .jar 文件中的其他包。
我创建了一个单独的项目来看看它是否在那里工作,但它就是不起作用。
我已经从 jna Github( https://github.com/java-native-access/jna/blob/)下载了最新的 .jar(jna-5.8.0.jar 和 jna-platform-5.8.0.jar)文件master/README.md),我已通过项目 - >配置构建路径 - >添加外部JAR将它们添加到类路径中
我正在使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
封装结构:
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
Run Code Online (Sandbox Code Playgroud)
正如@greg-449module-info.java在评论中提到的,您有一个模块化项目,由目录(包根目录)中存在该文件表明src。
您在这里有三个选择:
module-info.javamodule-info.java模块描述符以便在没有模块的情况下运行程序module-info.java) 以添加指令requires com.sun.jna。如果您正在使用,jna-platform那么还要添加requires com.sun.jna.platform.
Structure或PointerType您将需要open项目中包含这些子类的任何包,com.sun.jna因为它们使用反射来访问您的子类。(这里有多个选项,但open TestTest to com.sun.jna最接近 JDK8 的行为。)。我知道这只是一个测试设置,但请考虑反向 DNS 样式的包名称和模块描述符。jna-jpms-5.8.0和jna-platform-jpms-5.8.0JAR 作为依赖项,因为它们有自己的模块描述符。| 归档时间: |
|
| 查看次数: |
6342 次 |
| 最近记录: |