如何覆盖JRE本机库?

时间:2013-03-11 22:15:26

标签: java

是否可以在我自己的位置覆盖带有库的JRE本机库?我尝试使用-Djava.library.path=...,但当我检查lsof -p时,该过程仍在使用JRE副本。

背景:在Mac OS X上的Oracle JRE 7中,javax.security.smartcardio库已损坏。如果您经常调用list(),则会出现段错误。但由于修复很简单(不正确的64位函数签名),我能够构建OpenJDK并生成一个固定的libj2pcsc.dylib库,如果可能的话我不想更换系统库。

2 个答案:

答案 0 :(得分:0)

我不知道这是否适合你,但我想到的一个想法是java extension mechanism。我自己从未尝试过,但也许它可以达到你想要的效果。

答案 1 :(得分:0)

如果您可以将修复程序链接到共享对象,则可以尝试通过设置LD_LIBRARY_PRELOAD强制将其加载到系统库之前:

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