[英]Launch Java application (main) from specified directory
我有一個非常大/老/長期運行的項目,該項目使用相對於啟動目錄的路徑訪問文件資源(即,該應用程序僅在從特定目錄啟動時才起作用)。 當我需要調試程序時,可以從Eclipse中啟動它,並使用“運行配置”->->“工作目錄”來設置開始目錄。 我希望能夠編寫一個Java類,該類將從指定目錄啟動主類。 這可能嗎,如果我會怎么做? 我發現了一些相關的項目,包括以下所示的項目,但似乎找不到我要的答案。
https://community.oracle.com/thread/1257595?start=0&tstart=0
根據這個你可以寫與主要的是一個簡單的類:
例如
public class Exec
{
public static void main(String []args) throws Exception
{ choosenDir=askForWorkingDirectory()
jarFileNameWithabsolutePath=copyJarIntoDir(choosenDir)
Process ps=Runtime.getRuntime().exec(new String[]{"java","-jar",jarFileNameWithabsolutePath});
ps.waitFor();
java.io.InputStream is=ps.getInputStream();
byte b[]=new byte[is.available()];
is.read(b,0,b.length);
System.out.println(new String(b));
deleteJarFormChoosenDir(jarFileNameWithabsolutePath);
}
}
哪里:
askForWorkingDirectory()顯示DirectoryChooser對話框並返回絕對路徑。
copyJarIntoDir(choosenDir)接收選擇的目錄,在該目錄中復制jar文件,並返回具有文件名的jar文件的絕對路徑。
deleteJarFormChoosenDir(jarFileNameWithabsolutePath)最終刪除復制的jar
希望我能幫到您!
將Runtime.getRuntime.exec與可選的運行時目錄參數配合使用對我來說很有效。
這是我使用的:
public static void main(String[] args) throws Exception {
String classPath = getClassPath();
Runtime.getRuntime().exec("java -cp " + classPath + " com.mycompany.MyApp", null, MY_WORKING_DIR);
}
private static String getClassPath() {
StringBuffer buffer = new StringBuffer();
URLClassLoader urlClassLoader = ((URLClassLoader) (Thread.currentThread().getContextClassLoader()));
URL[] urls = urlClassLoader.getURLs();
for (URL url : urls) {
buffer.append(new File(url.getPath()));
buffer.append(System.getProperty("path.separator"));
}
String rtn = buffer.toString();
return rtn;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.