2013-03-11 65 views
4

是否有可能在我自己的位置使用庫重寫JRE本機庫?我嘗試使用-Djava.library.path=...,但是當我檢查lsof -p時,該過程仍在使用JRE副本。如何覆蓋JRE本機庫?

背景:在Mac OS X上的Oracle JRE 7中,javax.security.smartcardio庫已損壞。如果你經常調用list(),它會發生段錯誤。但由於修復很簡單(不正確的64位函數簽名),我能夠構建OpenJDK並生成一個固定的libj2pcsc.dylib庫,如果可能的話,我希望使用它而不替換系統庫。

+1

我認爲最簡單的解決將是備份系統庫和重命名你的。 – m0skit0 2013-03-11 22:21:04

+0

爲什麼不使用OpenJDK而不是Oracle JRE? – beny23 2013-03-11 22:40:31

回答

0

我不知道這是否適合你,但想到的一個想法是java extension mechanism。我從來沒有嘗試過,但也許它可以達到你想要的。

0

如果您可以修復鏈接到一個共享對象,那麼你可以嘗試迫使它的系統庫之前通過設置LD_LIBRARY_PRELOAD加載:

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