Могу ли я запустить программу Java, разработанную с использованием 32-битной JDK с 64-битной JRE? приложение использует 32-битные системные библиотеки не Java

Я разрабатываю Java-приложение с использованием 64-битного затмения на 64-битной установке Windows 7. Я вынужден использовать 32-битный JDK(1.7.0), потому что приложение использует Jpcap, который не будет компилироваться с 64-битным JDK.

Приложение должно быть кроссплатформенным в 32-битных и 64-битных системах, что обычно имеет место в Java-приложениях, разработанных с использованием любого JDK. Но я считаю, что ситуация немного сложнее, потому что помимо jar, Jpcap устанавливает системные библиотеки (.dll/.so), которые, в свою очередь, являются обертками для WinPcap и libpcap. Таким образом, вызов Jpcap - это последовательность вложенных вызовов этих библиотек.

Вот вопрос:

Будет ли исполняемый файл приложения работать на 64-битных платформах? при условии, что у пользователей будут установлены необходимые библиотеки x86 (jpcap.dll/.so, WinPcap, libpcap), поскольку 64-разрядные версии не существуют для библиотек Windows.

2 ответа

Решение

Будет ли исполняемый файл приложения работать на 64-битных платформах? при условии, что у пользователей будут установлены необходимые библиотеки x86 (jpcap.dll/.so, WinPcap, libpcap), поскольку 64-разрядные версии не существуют для библиотек Windows.

Вам нужно будет использовать 32-битную JRE для запуска приложения. 64-разрядная JRE Hotspot не может использовать 32-разрядные собственные библиотеки.

Но обратная сторона в том, что не имеет значения, используете ли вы 64-битный или 32-битный Eclipse для разработки и сборки... при условии, что вы сконфигурировали Eclipse для запуска 32-битного JRE для любого тестирования, в котором используются собственные библиотеки.

И чтобы быть ясным, вы можете запустить 32-битную JRE на платформе 64-битной ОС, но не наоборот.


ОБНОВЛЕНИЕ - очевидно, jpcap.dll может быть построен для 64-битной Windows - см. Это сообщение: https://groups.google.com/forum/?fromgroups=

По памяти (и это немного туманно) я бы так нет.

Собственные библиотеки (по крайней мере, под окнами) должны выполняться в той же битовой звуковой последовательности, что и JVM.

Итак, чтобы вы могли загружать свои 32-битные библиотеки, вы должны работать в 32-битном процессе (или 32-битной JVM)

Другие вопросы по тегам