2014-01-19 77 views
0

我想在java中創建一個GUI應用程序,用於簽署由JadTool.jar完成的j2me應用程序,但它是一個命令行界面應用程序。所以我只是想用它作爲庫並在程序中傳遞參數。如何做到這一點?使用命令行界面應用程序作爲庫

回答

1

一個jar只是一個類的庫,它可以從命令行運行的事實是由一個類中存在的主要方法引起的。作爲jadtool的source is available很容易看到它很簡單主:

public static void main(String[] args) { 
    int exitStatus = -1; 

    try { 
     new JadTool().run(args); 
     exitStatus = 0; 
    } catch (Exception e) { 
     System.err.println("\n" + e.getMessage() + "\n"); 
    } 

    System.exit(exitStatus); 
} 

不幸的是,run()方法是私有的,所以直接從另一個類調用將無法正常工作,導致一組選項減少:

  1. @WilliamMorrison通過運行時的解決方案 - 不是一個真正的庫調用,但它會工作。
  2. 看到Any way to Invoke a private method?
+0

目前我只需要'performAddJarSigCommand(字串[] args)',所以如果將其轉換爲'performAddJarSigCommand(字符串PAR1,PAR2串...)'和'刪除的run()'編輯'main'方法從命令行移除依賴關係並重建源,那麼我可以將它用作庫嗎? –

+2

@Dark_Prince是的,你可以。我已經更新了我的答案以涵蓋此內容。 –

+0

@Dark_Prince'performAddJarSigCommand'也是一個私有方法,所以同樣的建議仍然適用。 – fvu

2

結賬Runtime。它將允許你執行一個命令。你可以用它來啓動你的命令行界面庫。

編輯: 啊,我以前沒有仔細閱讀護理。如果您使用Java庫開始單獨的過程不是最佳解決方案。

只需引用項目中的JadTool jar。如果您需要的功能在庫中無法訪問,請編輯源代碼並重新編譯。確保JadTool的許可證允許這樣做。

如果您反對編輯源代碼(或不允許),請嘗試使用反射來調用您需要的私有運行方法。

相關問題