JDK 1.3中的Java Native Access

Jur*_*rri 0 java dll nio jna

我正在尝试将JNA集成到JDK 1.3应用程序中.JNA页面有以下主题:

1.4或更高版本的JVM支持(早期的VM可以使用存根NIO支持)

我已经设法通过删除所有java.nio引用将JNA源代码移植到JDK 1.3.我不需要例如java.nio.Buffer.

但是,JNA DLL被编译为使用Java NIO类型并且抱怨:

JNA:加载核心ID时出现问题:java.nio.Buffer

我需要做些什么才能使JNA在JDK 1.3中运行?这"可能与存根NIO支持有关"是什么意思?

我唯一的选择是从C源代码中存根NIO并重新编译DLL吗?因为我根本不擅长C编程,所以我拼命想避免它.

是否有其他方法在Java中调用本机DLL(不是JNI,称为DLL是封闭源和JNI不兼容).

Ern*_*ill 5

文档建议你写一些假java.nio类,并把它们放在bootclasspath- 然后不要使用任何需要的东西java.nio.您不应该修改JNA源或编辑本机代码.

  • upvoted.除了这个答案 - 您可能不需要更改任何本机c代码.要么做这个答案的建议,要么尝试使用这个版本的JNA http://java.net/jira/browse/JNA-108.作者剥夺了NIO,所以你不必这样做. (2认同)