【发布时间】:2016-08-13 18:24:54
【问题描述】:
我再次陷入(某种程度)几个月前已经解决的问题。我需要运行一个 Java 虚拟 POS,根据官方手册,它需要 Java VM 1.4.2,但环境是 Debian GNU/Linux 7 "Wheezy" amd64,我还没有找到该架构的特定版本(Solaris amd64 或 IA64 也不适合我的情况)。 Virtual POS 一直运行得非常好,但是在 Debian GNU/Linux 6 “Squeeze” i686 中(换句话说,在 32 位架构中)。我一直在尝试使用 Oracle JDK 8 64 位。我已经在 libOasisEMSec.so 上运行了 execstack,我再次从该站点 http://rpm.pbone.net/index.php3/stat/4/idpl/27875140/dir/opensuse_13.x/com/compat-32bit-2010.1.31-19.1.2.x86_64.rpm.html 下载了该文件,但为 64 位。编译很好,但是执行给了我以下错误:
# java -Djava.library.path=/var/www/vhosts/myvirtualshop.com/lib/Digest/linux -classpath /var/www/vhosts/myvirtualshop.com/lib/Digest/linux:/var/www/vhosts/myvirtualshop.com/lib/Digest/linux exampledigest
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /var/www/vhosts/myvirtualshop.com/lib/Digest/linux/libOasisEMSec.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /var/www/vhosts/myvirtualshop.com/lib/Digest/linux/libOasisEMSec.so: /var/www/vhosts/myvirtualshop.com/lib/Digest/linux/libOasisEMSec.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at OasisEMSecImp.<clinit>(OasisEMSecImp.java:9)
at exampledigest.main(exampledigest.java:36)
这里最大的问题是:如何在 Debian Linux 64 位环境中运行这个旧的 Java 二进制文件?
【问题讨论】:
-
你可以试试跑步吗...
java -d32 -Djava.library.path=/var/www/vhosts/myvirtualshop.com/lib/Digest/linux -classpath /var/www/vhosts/myvirtualshop.com/lib/Digest/linux:/var/www/vhosts/myvirtualshop.com/lib/Digest/linux examplediges -
亚马逊有一个 32 位 Debian 压缩 AMI (ami-1212ef7b),您仍然可以从 Oracle (oracle.com/technetwork/java/javasebusiness/downloads/…) 获得 Java 1.4.x。不是最漂亮的解决方案,但它可能会让你继续前进。
-
@vidit:这是 JRE 1.8.0_77 64 位答案:“错误:此 Java 实例不支持 32 位 JVM。请安装所需的版本。”
-
@stdunbar:我已经试过了,也没用。
标签: java linux debian 32bit-64bit