2016-08-24 45 views
0

我前段時間編寫了一個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時一切正常,但是當我嘗試從任務計劃程序運行它時,網頁似乎未打開。什麼會導致這種行爲?當任務調度程序運行程序時與手動運行程序時會發生什麼變化?

+3

我猜計劃任務正在以具有受限權限的不同用戶身份運行。我會檢查你的Windows錯誤日誌中的錯誤 –

+0

我正在查看「Windows日誌」,我看到「安全」下的大量「審計失敗」條目。我不知道這些是什麼。這些能夠指出問題嗎?我在任務計劃程序中的「常規」下面選中了「使用最高權限運行」框。 – DerStrom8

+0

我會查看用戶有關事件查看器中的錯誤以及計劃任務中的用戶。你可以將計劃任務用戶設置爲你自己嗎?也許您最近更改了密碼,並沒有更新計劃任務的密碼? –

回答

1

有幾件事情要檢查

  1. 哪個用戶計劃任務運行的?與雙擊圖標的用戶是同一個用戶嗎?
  2. 您最近是否更改了密碼?您可能需要更新計劃任務的密碼
  3. 轉到Windows事件查看器,那裏有任何錯誤嗎?
+0

#1指出了我的答案。事實證明,將sheduler作爲用戶「Administrator」運行的任務不同於將其作爲「Administrator ** s **」運行的任務。我將用戶更改爲「管理員」,並按預期工作。謝謝! – DerStrom8

相關問題