Ich bin (wieder) in ein Problem gefallen, das ich schon Monate zuvor gelöst habe. Ich muss ein Java Virtual POS ausführen, das laut dem offiziellen Handbuch die Java VM 1.4.2 benötigt, aber die Umgebung ist Debian GNU/Linux 7 "Wheezy" amd64, und ich habe diese Version für diese Architektur nicht gefunden (noch Solaris amd64 oder IA64 passen zu meinem Fall). Das Virtual POS funktioniert einwandfrei, aber in Debian GNU/Linux 6 "Squeeze" i686 (mit anderen Worten, in einer 32bit Architektur). Ich habe versucht, das Oracle JDK 8 64bits zu verwenden. Ich habe execstack über libOasisEMSec.so, die ich noch einmal heruntergeladen, aber in 64 Bits, von dieser Seite 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. Die Zusammenstellung ist in Ordnung, aber die Ausführung gibt mir die folgende Fehlermeldung:Unabled, um eine alte Java-Binärdatei in einem 64-Bit-Linux zu laufen
# 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)
Die große Frage ist: Wie kann ich diese alte Java Binary laufen, in einer Umgebung mit Debian Linux 64-Bit?
Können Sie versuchen Sie es mit ... '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 examplesdiages' – vidit
Amazon hat ein 32-Bit Debian Squeeze AMI (ami-1212ef7b) und Sie können immer noch Java 1.4.x von Oracle bekommen (http: // www .oracle.com/technetwork/java/javasebusiness/downloads/java-archiv-dow nloads-javase14-419411.html). Nicht die schönste Lösung, aber es könnte Sie weiterbringen. – stdunbar
@vidit: Dies ist die JRE 1.8.0_77 64-Bit-Antwort: "Fehler: Diese Java-Instanz unterstützt keine 32-Bit-JVM. Bitte installieren Sie die gewünschte Version." – abiyi