2012-12-01 60 views
3

我試圖使用進入「應用程序的VM實例」的Java代理在jnlp應用程序中自動執行一些操作,然後創建Swing GUI的新實例(以及我的自動化類)。使用Java代理自動化JNLP應用程序

它工作正常,我可以訪問幀的組件。問題在於,我的GUI作爲一個「小程序」運行,它在我的GUI的角落給了我一個黃色惱人的三角形,並且還切斷了我的權限(如文件訪問)。

JNLP在JNLP文件中具有<application-desc main-class="x"/>設置,因此該應用程序不作爲小程序運行。

如何將我的Swing GUI作爲應用程序運行而不是小程序?

的JavaAgent

public class FrameSearcherAgent { 

    public static void agentmain(String args) { 

    Frame[] frames = Frame.getFrames();   
    for(Frame f: frames) 
    {   
     if(f.getTitle().equals("Frame Title")){ 
     //Parameter is the Frame I want 
     new JFrameAutomateGUI(f).setVisible(true); 
     break; 
     } 
    } 
    } 
} 

回答

2

問題的代碼是我的GUI運行作爲一個「小程序」,這讓我在我的GUI的角落黃三角煩人..

不,這是錯誤的。

  1. 它適用於任何小程序或JWS應用程序。
  2. 這對用戶來說不是一個安全問題,也是我們在部署應用程序時必須面對的挑戰。

..並且還切斷了我的權限(如文件訪問)。

可以在任何使用Java Web Start部署的應用程序或小程序中訪問本地文件系統,但它需要不同的(特定於JWS的)API。這是一個demo. of using the JNLP file services

在另一方面:

  • 三角形就會消失,如果代碼進行數字簽名和請求JNLP j2ee-application-client-permissions
  • 該應用程序。如果已簽名並且JNLP請求all-permissions,則無需安全管理員即可完成所有可以執行的操作(包括顯示JFileChooser)。
+0

好的,但有問題,我不從JNLP運行我的應用程序...過程是:我有兩個罐子;第一個是通過所有VirtualMachine(VirtualMachine.getlist)循環並連接到我想自動化並加載我的代理(VM.loadAgent)的應用程序的VM(VirtualMachine.attach)的「注入器」;第二個是我的代理,它具有上面的代碼(在我的文章中)和我的GUI類。我的代理現在在虛擬機內部運行,它通過一個簡單的「新JFrame()」啓動我的GUI。所以我不能在JNLP中請求「全部權限」,因爲沒有JNLP。 – Bruno

+0

你可能需要安裝一個自定義的'SecurityManager'。 –