java.lang.UnsatisfiedLinkError - 当 运行 z/OS 应用

java.lang.UnsatisfiedLinkError - when running z/OS application

当我尝试 运行 我的 Java 应用程序之一(部署在 IBM Websphere App 服务器中)时,出现以下错误,

java.lang.UnsatisfiedLinkError: PATH/file.so (EDC5253S An AMODE64 application is attempting to load an AMODE31 DLL load module. (errno2=some_address)) at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1344)

有人遇到同样的 AMODE64 问题吗?

或者有人可以提供有关如何将代码编译为 AMODE64 的信息。

本文中的任何参考资料也会有很大帮助。

提前致谢。

您询问了有关如何在 64-bt 模式下编译代码的信息,但通常,作为 end-user,您不会是这样做的人,本机的提供者 library/dll 会这样做,因为您需要源代码。您将上面错误消息中的库文件名替换为 PATH/file.so,因此我无法为您提供有关该库的提供者可能是谁的任何指导。使用库的名称搜索提供者,然后向他们询问以 64 位模式编译的库版本。 如果您有机会拥有该库的代码,请参阅 this IBM KnowledgeCenter topic 了解有关如何在 64 位模式下编译和绑定代码的信息。

在 z/OS 上,如果您使用的是语言环境,则不能拥有部分编译为 31 位而部分编译为 64 位的混合单地址应用程序。所有现代高级语言都使用语言环境(例如 C、C++、Java、COBOL、PL/I),所以这就是导致您出现问题的原因。 根据您使用的 Java 版本,您可以切换到 31 位 JVM 或(最好)将 C DLL 重新编译并重新链接为 64 位。