[英]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應用程序?
我嘗試過的事情:
要調用該應用程序時,請勿對其進行編譯。 這不好:
javac
,在單個Java文件上調用javac
不是一件簡單的事情。 通常,您將使用maven來編譯B,並可能使用maven-shade-plugin創建一個包含B和所有依賴項(也稱為“胖” jar)的B.jar。 然后,當A調用B時,可以在調用它包含的應用程序時將胖jar用作類路徑。
您可能會考慮的其他事項:
App.main()
直接調用App.main()
在同一個JVM中運行它。 您可能希望它在單獨的線程中運行,這很容易做到。 ProcessBuilder
而不是Runtime.exec
。 在許多情況下,它是易於使用和正確使用的API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.