Я снова упал (вроде) в проблеме, которую я уже решил несколько месяцев назад. Мне нужно запустить виртуальную виртуальную машину Java, которая, согласно официальному руководству, нуждается в Java VM 1.4.2, но среда - это Debian GNU/Linux 7 «Wheezy» amd64, и я не нашел эту эксклюзионную версию для этой архитектуры (ни Solaris amd64, ни IA64 не подходят для моего случая). Этот виртуальный POS работает отлично, но в Debian GNU/Linux 6 «Squeeze» i686 (другими словами, в 32-битной архитектуре). Я пытался использовать Oracle JDK 8 64bits. Я запустил execstack над libOasisEMSec.so, который я загрузил еще раз, но в 64 бит, с этого сайта 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. Компиляция хорошо, но исполнение дает мне следующее сообщение об ошибке:Невозможно запустить старый двоичный файл Java в Linux 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)
большой вопрос здесь: как я могу запустить этот старый Java двоичный, в среде 64bits Debian Linux?
Можете ли вы попробуйте запустить ... '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' – vidit
У Amazon есть 32-разрядное сжатие Debian AMI (ami-1212ef7b), и вы все равно можете получить Java 1.4.x от Oracle (http: // www .oracle.com/technetwork/Java/javasebusiness/загрузки/Java-архив-доу nloads-javase14-419411.html). Не самое приятное решение, но это может заставить вас двигаться вперед. – stdunbar
@vidit: это ответ JRE 1.8.0_77 64 бит: «Ошибка: этот экземпляр Java не поддерживает 32-разрядную JVM. Пожалуйста, установите нужную версию». – abiyi