2011-11-04 42 views
0

原班是這樣的:如何動態地覆蓋靜態代碼塊中的Java類文件

 

    public class Test{ 

    static { 
     System.loadLibrary("hello"); 
    } 
    ... 
    } 

我想將它更改爲:

 

    public class Test{ 

    static { 
     System.load("/home/abc/libhello.so"); 
    } 
    ... 
    } 

的的Test.class是在jar文件。我無法更改jar文件。任何方式來做到這一點?

回答

3

否。如果您需要更改代碼的行爲方式,則需要更改代碼。爲什麼你不能更改jar文件?

+0

我想他只有.class文件 – damluar

+0

@damluar:那麼他不應該試圖改變代碼... –

+0

但我們不能在字節碼級別上做到這一點嗎? – damluar

2

無法覆蓋。

您可以隨時更改jar文件。使用反編譯器並獲得源代碼修改並將其打包回

+0

這是公司政策,jar文件由另一個團隊提供,他們不會爲我們做任何定製 – Hebing

0

Test.class是您的Test.java文件的編譯版本。如果您想更改程序的行爲,則必須在Test.java文件中對其進行更改並重新編譯它。

+0

這是公司政策,jar文件是由另一個團隊提供的,他們不會爲我們做任何定製 – Hebing