2011-12-09 56 views
2

我正在開發一個項目,使用靜態方法(如D.raw(anyObject);)在運行時以圖形方式可視化Java對象。 現在我試圖將它轉換成一個eclipse插件,所以輸出可以在eclipse中顯示。但我不知道如何從插件提供靜態方法以用於工作區項目。我認爲可以在工作區中提供一些.jar庫,但我仍然不知道如何管理插入到我的插件中的步驟...通過java應用程序中的方法調用我的eclipse插件

我在這裏找到了類似問題的解決方案:call a own eclipse plugin method from any java application 但隨着的是,我無法承諾我的對象作爲參數...

在此先感謝

塞德里克

+0

爲什麼你需要從工作區應用程序調用插件中的方法? –

+0

想法是有一個類似於'System.out.println()'的可視化,但只有圖形。我們正在生成html渲染,並且希望在調用'D.raw()'時在eclipse中實時顯示它們。 –

回答

0

您可以創建一個導出罐內的所有包的包裝插件。 (來自現有jar的新插件項目)。

要做到這一點,創建一個新的插件,編輯MANIFEST.MF - >運行時 - >導出包。該MANIFEST.MF應該是這樣的:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Myplugin 
Bundle-SymbolicName: com.mycompany.myplugin 
Bundle-Version: 1.0.0.qualifier 
Bundle-Activator: com.mycompany.myplugin.Activator 
Bundle-Vendor: MYCOMPANY 
Require-Bundle: org.eclipse.ui, 
org.eclipse.core.runtime 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Bundle-ActivationPolicy: lazy 
Export-Package: com.mycompany.myplugin.mypackage1, 
com.mycompany.myplugin.mypackage2, 
com.mycompany.myplugin.mypackagexxx 

即可使用,它的另一個插件,你必須添加的包裝插件你的依賴。

+0

嗯,所以我會包裝用戶應用程序並在我的插件中訪問它,對吧?但是我認爲我需要的是我認爲的另一個方向,或者我誤解了某些東西? –

2

您面臨的真正問題是插件和您的類將在單獨的JVM中運行。

一種解決方案是:

  1. 打電話給你檢查的代碼(我假設它需要使用運行時反射)從要檢查的代碼(即打電話給你D.raw功能)
  2. 序列化的檢查數據到日誌文件
  3. 有你的插件監視文件,當它改變反序列化和刷新可視化

這類似於如何升Eclipse插件適配器的工作。

這種做法的'真正'方法是不必調用D.raw,而是直接使用與jvisiualvm工具相同的API通過套接字與JVM通信。

+0

您對插座方法有更多見解嗎?更能改善答案:) – Simon

相關問題