簡體   English   中英

Java ProcessBuilder

[英]Java ProcessBuilder

我在使用ProcessBuilder在項目中運行類時遇到問題。 我的代碼:

public class Main {
    public static void main(String[] args) {
        try {
            String pathToJar = Main.class.getProtectionDomain().getCodeSource()
                    .getLocation().toURI().getPath();
            ArrayList<String> params = new ArrayList<String>();    
            params.add("javaw");
            params.add("-classpath");
            params.add(pathToJar);
            params.add("Program");
            ProcessBuilder pb = new ProcessBuilder(params);
            Process process = pb.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class程序在同一個項目(相同的bin文件夾)中,如果直接運行可以正常工作但這樣我得到錯誤“找不到主類:程序”。 我的代碼中的錯誤在哪里?

提前致謝。

[編輯]我得到的結論是我的Program類上的一些代碼給出了錯誤。 基本上只運行“干凈”主。 在eclipse中,Program類正在導入一些jar文件中的庫。 我不需要在ProcessBuilder中引用它嗎? 如果是這樣,怎么樣?

為了回應您的編輯:

您可以通過切換params.add(pathToJar);來添加當前路徑params.add(pathToJar); with params.add(System.getProperty("java.class.path").concat(";").concat(pathToJar))‌​;

我的代碼中的錯誤在哪里?

(您正在啟動javaw可執行文件,因此這不是問題。也不是您的入口點方法的簽名不正確,因為這會給出不同的診斷。)

問題是類名是不正確的(例如,如果應該是“come.pkg.Program”),或者JAR文件的路徑名是不正確的。


假設您已經消除了類名不正確的可能性,我的猜測是您正在嘗試使用JAR文件的相對路徑名,但是對於當前目錄的內容存在一些混淆; 即需要解析路徑名的目錄。 嘗試在classpath參數中使用絕對路徑名。

暫無
暫無

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

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