我正在構建一個應用程序,它通過 XML 文件獲取輸入并基于它執行許多操作。我知道該應用程序有效,因為我可以直接在代碼中為 XML 提供一個文件,并且它會按原樣運行。當我嘗試通過打包的 .jar 的命令行參數將路徑傳遞到 XML 文件時,問題就出現了。我的主要看起來像這樣: public static void main(String[] args) { LogWriter.openWriter(); LogWriter.log("Main start."); Controller controller = new Controller(); LogWriter.log("Controller created."); List<Parameters> parameters = new ArrayList<Parameters>(); for (int i = 0; i < args.length; i++) { LogWriter.log("Got arg: " + args[i]); File file = new File(args[i]); LogWriter.log("Parameter file: " + file.getAbsolutePath()); if (file.exists()) { LogWriter.log("File exists. Getting parameters."); Parameters para = controller.getParameters(file); LogWriter.log("Attempting to add parameters."); parameters.add(para); LogWriter.log("Added parameters."); } else { LogWriter.log("File is not valid."); } }}我用來運行它的腳本如下所示:java -jar PDFRedacter.jar C:\Users\je\Downloads\XMLConfig.xml真正奇怪的是,只有當我給它一個有效文件時它才會失敗。如果我提供無效文件,它會運行,并記錄該文件無效,并且如前所述,如果我直接在代碼中輸入有效文件,它也會運行。但是,在批處理中寫入有效路徑時,甚至不會記錄第一個“主啟動”,因此代碼根本不會運行。這可能是一些訪問問題嗎?編輯:記錄器不是我的問題,無論有沒有有效文件,它都能按預期工作?!盁o效文件”日志示例:主要開始??刂破鲃摻?。得到 arg:C:\Users\je\Downloads\XMLConfig參數文件:C:\Users\je\Downloads\XMLConfig文件無效。澄清一下,問題實際上不是讀取文件。問題是,當我通過批處理腳本提供有效文件時,我的代碼似乎根本沒有運行。最終編輯:事實證明問題只是我的 .jar 的包裝,缺乏依賴。正如其他人所建議的那樣,我的記錄器只是在執行結束時才刷新,這就是為什么它沒有寫任何內容的原因。感謝您的意見。
1 回答

茅侃侃
TA貢獻1842條經驗 獲得超22個贊
正如托馬斯懷疑的那樣,程序失敗肯定有另一個原因,因為您的函數應該可以工作。如果您將其簡化為檢測文件是否存在,并且一旦您使其正常工作,請一個接一個地添加參數列表、控制器和記錄器,您可能會找到失敗的原因?!?/p>
這是我測試的示例 - 它適用于所有現有文件或目錄。
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("Got arg: " + args[i]);
File file = new File(args[i]);
System.out.println("Parameter file: " + file.getAbsolutePath());
if (file.exists()) {
System.out.println("File exists. Getting parameters.");
} else {
System.out.println("File is not valid.");
}
}
}
添加回答
舉報
0/150
提交
取消