簡體   English   中英

如何在Eclipse的Maven項目中編譯和運行Java應用程序?

[英]How to compile and run Java application within Maven project in Eclipse?

我有一個現有的Web應用程序A,它是Eclipse中的Maven項目。 它在Tomcat 8本地服務器上運行。 現在,我有一個Java應用程序B,它是一個單獨的項目。 我已經將B導入到我的工作區中,而A作為另一個項目。 我試圖運行一個主類(稱為App.java ),該主類從A中的一個類存在於B中。A中的類如下:

public void runOrgReportUtility() throws IOException {
    int k = runProcess("javac /Users/ag/utilities/org-report-utility/src/main/java/com/vs/orgreport/App.java", null);
    if (k==0) {
        log.info("Compiled. Now trying to run class.");
        String commandStr = "java -cp /Users/ag/utilities/org-report-utility/src/main/java/com/vs/orgreport/ App";
        log.info("Command String: ");
        log.info(commandStr);
        runProcess(commandStr);
}

public int runProcess(String command, String[]) throws Exception {
    Process pro = Runtime.getRuntime().exec(command);
    pro.waitFor();
    return pro.exitValue();
  }

當我嘗試運行A時,控制台給了我一個error: cannot find symbol為B中的各種類error: cannot find symbol 。這使我意識到,只有App.java被編譯和運行,而B中的其他相關類卻沒有。

啟動原始Web應用程序時,如何編譯和運行第二個Java應用程序?

我嘗試過的事情:

  • 設置(原始)項目引用以包含輔助Java應用
  • 將Java應用程序項目添加到原始項目的Java構建路徑(在“ 項目”選項卡中)
  • 將Java應用程序添加到原始項目的部署程序集

要調用該應用程序時,請勿對其進行編譯。 這不好:

  1. 由於所有依賴性,使用javac進行編譯非常困難。 如您javac ,在單個Java文件上調用javac不是一件簡單的事情。
  2. 為什么要等到嘗試運行它后才發現有錯誤使其無法編譯?
  3. 為什么每次運行時都會產生編譯的開銷?

通常,您將使用maven來編譯B,並可能使用maven-shade-plugin創建一個包含B和所有依賴項(也稱為“胖” jar)的B.jar。 然后,當A調用B時,可以在調用它包含的應用程序時將胖jar用作類路徑。

您可能會考慮的其他事項:

  1. 您可能還可以在Web應用程序中包含胖子jar,這樣就不必依賴於必須安裝外部jar才能使Web應用程序完全發揮作用。
  2. 與其在單獨的進程中執行其他應用程序, App.main()直接調用App.main()在同一個JVM中運行它。 您可能希望它在單獨的線程中運行,這很容易做到。
  3. 如果您真的想要一個單獨的OS進程,請使用ProcessBuilder而不是Runtime.exec 在許多情況下,它是易於使用和正確使用的API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM