2013-03-11 3 views
4

Возможно ли переопределить родную библиотеку JRE с библиотекой в ​​моем собственном местоположении? Я пробовал использовать -Djava.library.path=..., но когда я проверяю lsof -p, процесс по-прежнему использует копию JRE.Как переопределить родные библиотеки JRE?

Фон: В Oracle JRE 7 на Mac OS X библиотека javax.security.smartcardio сломана. Если вы слишком часто вызываете список(), это происходит. Но поскольку исправление было простым (некорректная 64-битная подпись функции), я смог построить OpenJDK и создать фиксированную библиотеку libj2pcsc.dylib, которую я хочу использовать, если это возможно, без замены системной библиотеки.

+1

Я думаю, что проще всего исправить было бы сделать резервную копию системной библиотеки и переименуйте свое. – m0skit0

+0

Почему бы вам просто не использовать OpenJDK вместо Oracle JRE? – beny23

ответ

0

Я не знаю, будет ли это работать для вас, но одна идея, которая приходит на ум, - это java extension mechanism. Я никогда не пробовал это сам, но, возможно, он может достичь того, чего вы хотите.

0

Если вы можете связать ваши исправления в общий объект, то вы можете попробовать, чтобы заставить его быть загружен до библиотеки системы путем установки LD_LIBRARY_PRELOAD:

$ LD_LIBRARY_PRELOAD=/path/to/your/libj2pcsc.dylib java com.yourpkg.YourClass