Java 如何覆盖JRE本机库?

Java 如何覆盖JRE本机库?,java,Java,可以在我自己的位置用库覆盖JRE本机库吗?我尝试使用-Djava.library.path=…,但当我选中lsof-p时,进程仍在使用JRE副本 背景:在MacOSX上的OracleJRE7中,javax.security.smartcardio库被破坏。如果调用list()太频繁,则会出现错误。但是由于修复程序很简单(64位函数签名不正确),所以我能够构建OpenJDK并生成一个固定的libj2pcsc.dylib库,如果可能的话,我想在不替换系统库的情况下使用它。我不知道这是否适用于您,但我

可以在我自己的位置用库覆盖JRE本机库吗?我尝试使用
-Djava.library.path=…
,但当我选中
lsof-p
时,进程仍在使用JRE副本


背景:在MacOSX上的OracleJRE7中,
javax.security.smartcardio
库被破坏。如果调用list()太频繁,则会出现错误。但是由于修复程序很简单(64位函数签名不正确),所以我能够构建OpenJDK并生成一个固定的
libj2pcsc.dylib
库,如果可能的话,我想在不替换系统库的情况下使用它。

我不知道这是否适用于您,但我想到的一个想法是java。我自己从未尝试过,但也许它可以实现您想要的功能。

如果您可以将修复程序链接到共享对象,则可以通过设置LD\u library\u PRELOAD,尝试在系统库之前加载它:

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

我认为最简单的修复方法是备份系统库并将您的系统库重命名为该库。为什么不使用OpenJDK而不是Oracle JRE呢?