我正在寫一個程序,加載指定文件夾中的所有類。加載一個具有本地代碼依賴性的Java類
某些類正在靜態塊中創建對象,並且這些對象反過來在創建過程中進行一些本地調用。由於我沒有本地庫,所以我看到一個java.lang.UnsatisfiedLinkError
這是一個示例場景。
Class A extends SuperA
{
public static B b = new B();
...
...
}
Class B
{
public B()
{
someNativeCall(); // Causing the LinkError
}
}
Class.forName("A"); // Loading of Class A
我加載的類在這裏檢查它的一些屬性,如它的超類等等,所以我如果創建B沒有甚至不關心或不:) 因爲可以有很多類,比如在給定的文件夾中,是否有一種通用的方法來確保像A這樣的類的加載不會失敗?
更新:我知道本地庫需要存在以及它需要如何添加。但我沒有本地圖書館,因此正在尋求這種破解。
在運行時,可以我們確定所有的類如B,並注入模擬的B對象?我不知道一種方法來實現它。 – Varun 2009-12-29 15:03:03
另請參閱http://stackoverflow.com/questions/1029559/java-system-loadlibrarysomedllfile-gets-unstatisfied-link-error – finnw 2009-12-29 15:09:41
我已經實現的解決方案:javap可以通過編程方式訪問,但API不是很清楚。最後使用了http://jakarta.apache.org/bcel/manual.html,它們具有類似於java反射的清晰API。 – Varun 2009-12-30 10:42:22