适用于 z/OS (USS) 的 JNA 库

Posted

技术标签:

【中文标题】适用于 z/OS (USS) 的 JNA 库【英文标题】:JNA library for z/OS (USS) 【发布时间】:2020-04-01 05:27:24 【问题描述】:

我正在尝试在加载 JNA jar 的 z/OS USS(大型机)上运行 cassandra。 CASSANDRA 无法启动并出现错误 -

错误 [main] 2020-04-01 01:07:44,272 NativeLibraryLinux.java:64 - 无法将 C 库链接到 JNA。本机方法将不可用。 java.lang.UnsatisfiedLinkError: 未找到本机库 (com/sun/jna/z/os-s390x/libjnidispatch.so)。

我在 jar 中找不到 com/sun/jna/z/os-s390x/libjnidispatch.so。 libjnidispatch.so 使用 libffi C 库。有一个可用的端口https://github.com/eclipse/openj9/tree/master/runtime/libffi/z。我不确定如何在 USS(大型机)上编译 libffi 和 libjnidispatch.so。

在 z/OS USS(大型机)上是否有可用的 JNA 库/libjnidispatch.so 端口?

【问题讨论】:

【参考方案1】:

有一个开源项目正在 Z 上实现 Devops,名为 Polycephaly。这是一个 link 给他们的 cmets 关于这个错误。

他们没有特别提到 Cassandra,但这是一个与 Jenkins 相关的错误,它是在 z/OS 上改进 DevOps 的几种分布式工具之一。 该错误似乎不会影响他们正在执行的操作,因为有替代类可用于管理此功能。

注意:找不到错误“com/sun/jna/z/os-s390x/libjnidispatch.so”是正常的。 z/OS Java 不包含 Oracle JNI 类。这不会导致任何问题。

【讨论】:

Cassandra 在我的情况下没有启动。

以上是关于适用于 z/OS (USS) 的 JNA 库的主要内容,如果未能解决你的问题,请参考以下文章

使用JNA,让java调用原生代码

java使用JNA框架调用dll动态库

Java中jna的用法

Java JNA 本机库调用 NoClassDefFoundError

JNA调用库文件

JNA调用DLL简单使用