从任务调度程序运行时,从Java应用程序打开网页不起作用

问题描述:

我前段时间编写了一个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. 哪个用户计划任务运行的?与双击图标的用户是同一个用户吗?
  2. 您最近是否更改了密码?您可能需要更新计划任务的密码
  3. 转到Windows事件查看器,那里有任何错误吗?
+0

#1指出了我的答案。事实证明,将sheduler作为用户“Administrator”运行的任务不同于将其作为“Administrator ** s **”运行的任务。我将用户更改为“管理员”,并按预期工作。谢谢! – DerStrom8