Может ли 32-битный экспортированный файл jar быть выполнен с использованием 64-битных java-библиотек?

Я экспортирую файл try.jar с использованием 32-битных java-библиотек. На клиентском сайте у меня есть 64-битные java-библиотеки. Может ли try.jar вести 64-битный исполняемый файл?

Например, у меня есть

Runtime rt = Runtime.getRuntime();
s = rt.exec("someExecutable");

someExecutable binary находится в 64-битном режиме, и использование этого кода с 32-битными java-библиотеками, похоже, не работает. Мой soln 'к этой проблеме заключается в том, чтобы экспортировать try.jar с использованием 32-битных java-библиотек (потому что моя среда находится в 32 бит) и запускать try.jar с использованием 64-битных библиотек на клиентском сайте. Правильно ли этот подход или какие-либо другие предложения?

когда я запускаю someExecutable напрямую (без участия Java), который является 64-битным на клиентском сайте. Он отлично работает (клиентский сайт также является 64-разрядным.). Но когда я использую s = rt.exec( "someExecutable" ); Это не работает. java-библиотеки (jre файлы, загруженные через java.sun.com) теперь являются 32-битными как на клиентских, так и на сайтах разработки. У меня проблема решить, если я устанавливаю 64-разрядные библиотеки на клиентский сайт, но не на сайт разработки?

3 ответа

Вам понадобится двоичный файл someExecutable, доступный в архитектуре операционной системы, для которой вы хотите запустить свою программу.

На самом деле это не имеет ничего общего с Java - все, что делает Java, - это основная операционная система и попытка выполнить команду в строке, переданной в Runtime.exec().


Java librairies здесь не проблема. Если вы хотите exec someExecutable, эта программа должна быть в 32 бит для 32-битной среды.

Библиотеки Java не 32 или 64 бит, они находятся в Java ByteCode. Таким образом, они могут быть выполнены на любом JVM 64 или 32 точно так же.


Какую проблему вы получите, когда это сделаете? Если вы используете 100% -ный код Java, JRE должна прозрачно передавать все другие вещи.

licensed under cc by-sa 3.0 with attribution.