我正在使用Equinox Transforms在類路徑中用它的自定義版本替換一個類。轉換機制似乎正常工作,我返回我的變壓器類的public InputStream getInputStream(InputStream inputStream, URL transformerUrl)
的自定義類的InputStream
。使用Eclipse轉換另一個類轉換:無法修復ClassFormatError
但是,該類的加載會導致ClassFormatError
帶有消息Truncated class file
。我能夠想象的唯一原因是Java版本之間的不匹配,但是我已經盡了一切我知道如何去消除這個問題的根源,但都無濟於事。
我在Installed JREs首選項中從Eclipse中除去了一個JDK。我確保所涉及的所有插件的執行環境都具有相同的Java版本,並且構建路徑上的JRE在相同的執行環境中指定。目標和產品執行環境的定義也相同。我在工作區做了一個clean all
,並重新啓動了eclipse和我的運行時工作臺多次,其中-clean
。畢竟,我仍然得到錯誤。
如果不是Java版本導致此錯誤,還能有什麼? Equinox Transforms頁面說,它可以用來轉換類資源。有沒有人真的這樣做?
這個項目的最新提交是2013年,它似乎被放棄.. –
是的,我注意到了。但它被記錄爲工作。可能有些東西我不懂加載類,因爲春分代碼似乎在做它應該做的。 – MidnightJava
你應該嘗試一下在osgi中重寫類的「標準」方法:weavinghook https://osgi.org/javadoc/r6/core/org/osgi/framework/hooks/weaving/WeavingHook.html –