.jar 文件不适用于 Windows 调度程序

Posted

技术标签:

【中文标题】.jar 文件不适用于 Windows 调度程序【英文标题】:.jar File Not Working With Windows Scheduler 【发布时间】:2013-08-17 14:09:12 【问题描述】:

大家好,所以我用 java 编写了一个程序(使用 eclipse)并将单个类程序导出到 .jar 文件。该程序还启动一个批处理文件。当我双击 .jar 文件时,jar 完美运行并启动批处理文件。

但我想做的是让 .jar 文件每周运行一次,所以我使用 Windows 调度程序创建了一个任务,其操作是 .jar 文件。这没有用。然后我在某处读到 Windows 调度程序不喜欢 .jar,所以我想制作第二个批处理文件(start.bat)来启动 .jar,然后启动第一个批处理文件。

我的 start.bat 中的命令是

java -jar myJar.jar

当我双击 start.bat 文件时,一切正常。但是,当我设置 Windows 调度程序以启动此任务时,我收到以下有关 cmd 窗口的错误消息

错误:无法访问 jarfile myJar.jar

这真的让我很难过,因为所有文件都在同一个目录中。 任何帮助将不胜感激,谢谢。

【问题讨论】:

使用 myJar.jar 的完整路径而不是相对路径 - windows 调度程序的运行目录是 C:\Windows\System32 并且您的 jar 文件可能不在此目录中。跨度> 尝试在批处理文件中提供myJar.jar 的完整路径。 谢谢一百万,就是这样。愚蠢的错误,非常感谢!! 【参考方案1】:

显然这条评论就是答案:

使用 myJar.jar 的完整路径而不是相对路径 - windows 调度程序的运行目录是 C:\Windows\System32 并且您的 jar 文件可能不在此目录中。

【讨论】:

【参考方案2】:

Task Scheduler 无法直接运行 .jar,您需要通过命令提示符运行它。 因为任务调度程序通过 cmd 运行 .bat,所以它的默认执行位置即 C:/windows/system32 我们需要更改路径。 在调度程序中调度任务时,调用 TaskName.bat 作为操作。 所以,

在TaskName.bat中创建一个批处理文件“TaskName.bat” 输入以下内容

@echo 关闭

cd "jar 文件路径示例 C:\MyFolder"

java -jar Nameofthejar.jar

暂停

【讨论】:

【参考方案3】:

如果您按照以下步骤操作,您将不会遇到任何问题。

步骤 0:设置

application.properties 中添加app.schedule.externally_managed=true

第 1 步:创建新任务

点击创建

提供详细信息

Windows 10 的配置很重要

第 2 步:触发器详细信息

第 3 步:操作详情

第 4 步:操作

确保所有复选框都未选中,如下所示,这很重要

第 5 步:查看任务详情

请参阅this 和this 了解更多详情

【讨论】:

以上是关于.jar 文件不适用于 Windows 调度程序的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB - 适用于外部 Jar - 不适用于 JRE

锁定文件不适用于 Windows .bat 文件

为啥调度和请求库不适用于 Python 中的此类?

Prepared Statement 中的绑定不适用于 Microsoft SQL Server JDBC 驱动程序 sqljdbc4.jar

spring.profiles.include 不适用于命令行参数

fopen() 不适用于 gvim 编辑器