Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将批处理文件作为计划任务运行时,其行为是否不正常?_Java_Mysql_Windows_Batch File_Jdbc - Fatal编程技术网

Java 将批处理文件作为计划任务运行时,其行为是否不正常?

Java 将批处理文件作为计划任务运行时,其行为是否不正常?,java,mysql,windows,batch-file,jdbc,Java,Mysql,Windows,Batch File,Jdbc,我有一个jar文件,它使用jdbc连接到sqldb并添加一个新记录。要使用arg执行此操作,我将cmd行命令放在批处理文件中以运行它 现在,如果我手动单击并运行批处理文件,它工作正常,我可以在我的sql数据库中看到新记录,但是我已经创建了一个计划任务,每天为我运行一次批处理文件,它似乎成功了,但没有新记录添加到数据库中 你知道为什么会这样吗 批处理文件只有一行,因为在我运行它时它似乎可以工作: java-Dvar=daily-jarsql\u JDBC\u Bandon.jar 我将此作为答案发

我有一个jar文件,它使用jdbc连接到sqldb并添加一个新记录。要使用arg执行此操作,我将cmd行命令放在批处理文件中以运行它

现在,如果我手动单击并运行批处理文件,它工作正常,我可以在我的sql数据库中看到新记录,但是我已经创建了一个计划任务,每天为我运行一次批处理文件,它似乎成功了,但没有新记录添加到数据库中

你知道为什么会这样吗

批处理文件只有一行,因为在我运行它时它似乎可以工作:

java-Dvar=daily-jarsql\u JDBC\u Bandon.jar


我将此作为答案发布,因为它在评论中看起来很难看

要将执行日志与计划任务的任务执行日志进行比较,请创建类似的批处理

@echo off
echo JDBC executed %DATE% %TIME% >> C:\temp\logs\jdbctask.log
C:
cd \PathToYourJar
C:\Programs\Java\bin\java -version >> C:\temp\logs\jdbctask.log
Dir C:\Programs\Java\bin\java.* >> C:\temp\logs\jdbctask.log
C:\Programs\Java\bin\java -Dvar=daily -jar SQL_JDBC_Bandon.jar >> C:\temp\logs\jdbctask.log
这可以确保您不依赖于PATH或JAVA_HOME变量,这些变量可能不是为运行批处理的用户设置的。请根据您的需要调整路径。
如果仍然失败,请发布日志文件的结果。

我前一段时间已经解决了这个问题,但我所做的只是将这两行放在一个.bat文件中,作为一项计划任务,它可以正常工作:

cd C:\Users\SQLService\Desktop\ScadaCalcs
java -Dvar=daily -jar SQL_JDBC_Bandon.jar

需要注意的一点是,jar和脚本都在ScadaCalcs目录中,但我必须为其创建一个绝对路径。

请发布批处理。。。你有没有试着弄清楚批处理是否被执行过?添加类似“echo HereIAm!>>C:\temp\batch.log”的内容。使用哪些凭据运行批处理?您是否传递参数(它们很容易丢失)?可能此上下文中使用的用户不允许执行某些操作…如果我只单击并运行批处理,则批处理可以工作,并且任务历史记录显示任务已成功运行?任务历史记录可能错误。。。请发布更多细节,因为没有细节我们只能猜测。这不起作用。所有日志文件显示的是:JDBC executed 17/06/2015 12:25:00.52您的问题解决了吗?好的,我将尝试一下。当手动运行vs作为调度任务时,它工作的原因是什么?作为调度任务,它在另一个上下文中运行-使用另一个“homedirectory”,因此可能找不到您的文件。不。这不起作用。所有日志文件显示的是:JDBC执行于2015年6月17日12:25:00。52@ruffles我想你根据你的环境调整了路径?我对批处理进行了另一次编辑,那么这与我的答案中的两行“C:”/“CD”有何不同呢?不同之处在于,无论出于何种原因,您的方式都不起作用。它会执行,但实际上并没有做它应该做的事情。将其拆分为两个单独的行/命令会产生相同的结果,因此错误一定发生在其他地方。根据批量文件的起始位置,您的Cd方式会带来风险我应该注意哪些风险?批处理从桌面上的文件夹开始