我前段時間編寫了一個Java程序,在我上午工作之前自動打開了一個網頁。我通過從Java調用一個批處理文件來打開網頁。這個程序運行了三四個月沒有任何問題,但有一天它停止了工作。我試圖從Java內部打開網頁,而不是批處理文件,但我一直遇到問題。這是我使用的過程:從任務調度程序運行時,從Java應用程序打開網頁不起作用
- 我將程序導出爲可運行JAR並使用Launch4j將其轉換爲EXE。在我的Windows任務調度程序中,我安排它在每天早上5:30運行。
- 我的Java程序調用存儲我的桌面
- 批處理文件打開Chrome瀏覽器上,並調用網頁打開
當我手動運行Java程序的EXE(從雙擊該批處理文件桌面)它正確運行,調用批處理文件並打開網頁。但是,當我嘗試從Windows任務調度程序運行EXE時,它不會(明顯)打開網頁。它確實似乎在後臺運行Chrome(根據任務管理器/ Process Explorer),但網頁本身似乎並未打開(我可以說因爲我打開的網頁應該播放音樂,但我什麼都沒聽到)。
這是我用它來運行該批處理文件中的Java函數:
public static void openWebpage() throws Exception {
String[] startupBat = {"cmd", "/c", "start", "/B", System.getProperty("user.home") + "\\Desktop\\WebpageStart.bat"};
ProcessBuilder pb = new ProcessBuilder(startupBat);
try {
webpage = pb.start();
} catch (IOException e) {
logWriter.write(tf.format(new Date()).toString() + " - Unable to start webpage");
}
if (webpage != null) {
try {
webpage.waitFor();
} catch (InterruptedException e) {
logWriter.write(tf.format(new Date()).toString() + " - Webpage startup interrupted");
} finally {
webpage.destroy();
}
}
}
這裏是我用來啓動網頁批處理文件的內容:
@echo off
start "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" http://www.myWebpage.com
再次,當我手動運行Java EXE時一切正常,但是當我嘗試從任務計劃程序運行它時,網頁似乎未打開。什麼會導致這種行爲?當任務調度程序運行程序時與手動運行程序時會發生什麼變化?
我猜計劃任務正在以具有受限權限的不同用戶身份運行。我會檢查你的Windows錯誤日誌中的錯誤 –
我正在查看「Windows日誌」,我看到「安全」下的大量「審計失敗」條目。我不知道這些是什麼。這些能夠指出問題嗎?我在任務計劃程序中的「常規」下面選中了「使用最高權限運行」框。 – DerStrom8
我會查看用戶有關事件查看器中的錯誤以及計劃任務中的用戶。你可以將計劃任務用戶設置爲你自己嗎?也許您最近更改了密碼,並沒有更新計劃任務的密碼? –