15

我试图在 Windows 7 机器上每天运行一次简单的 JAVA 程序。

我的代码在 NetBeans 中运行良好。如果我进行清理并构建它,则表明:

C:\Program Files\Java\jdk1.7.0/bin/java -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"

当然,由于程序和文件之间的空间,这在 DOS 提示符下不起作用,所以我这样做:

C:\Program Files\Java\jdk1.7.0/bin/java -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar" -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"

这适用于 DOS 提示符。

我现在在 Windows 调度程序中创建一个任务来运行:

C:\Program Files\Java\jdk1.7.0/bin/java

有论据:

-jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"

然后当我运行它时,我看到的只是一个 DOS 框闪烁一秒钟。我预计代码需要大约 30 秒才能运行。代码应该将数据持久化到数据库并且不会发生更新。

该代码也使用java.util.logging,所以我应该看到日志条目,但我没有。

我强烈怀疑我没有正确运行 JAVA 命令,或者它在通过调度程序运行时出现了错误的类路径问题,而从 DOS 提示符运行时不存在。

帮助将不胜感激。如果您以前见过这个并且可以对其进行排序,那就太好了。如果您能告诉我如何从 Scheduler 获得有意义的错误跟踪,那也将非常有帮助。

谢谢!

4

4 回答 4

17

我认为您可以创建一个简单的批处理脚本,以这种方式启动您的程序:

@echo off
REM Eventually change directory to the program directory 
cd C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\
REM run the program
"C:\Program Files\Java\jdk1.7.0\bin\java.exe" -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"

将其复制到记事本中并另存为 java_script.cmd 然后调度此脚本而不是直接调度程序。

于 2012-08-20T08:53:56.393 回答
1

我在将所有字体的引用更改为“SansSerif”后解决了它

我在 Java 中使用 Jasper Reports 创建 PDF 文件。当我在 Windows Server 2003 上双击批处理文件或调度程序但不能与 2008 的调度程序一起工作时,它工作正常。

我尝试了许多不同的方法,但没有任何效果,所以我认为可能是 Windows Server 2008 阻止了访问吗?

现在工作完美。因此,如果您遇到问题,请检查对您正在使用的任何内容的引用。

于 2012-12-13T19:44:31.507 回答
0

除非您指定以哪个用户身份运行,否则调度程序将在不同的用户下运行。如果它没有以您的用户身份运行,那么它将无法写入您的目录。

于 2012-08-20T08:51:52.270 回答
0

原始问题的真正问题是 Microsoft 系统上的 java 安装问题。Java jre 安装到 Program Files\java。可执行文件 (java.exe)安装在该 java\bin 目录中。从命令行运行,操作系统会在正确的位置查找 java.exe。从其他 MS 工具(例如 VBA Excel 或本例中的 TaskScheduler)运行,它不会!

您可以通过查看 TaskScheduler 工具中的任务历史记录来发现 TaskScheduler 正在寻找错误的位置。双击一些历史事件,将列出动作和返回码。该操作将显示 TaskScheduler 正在尝试运行

"C:\Windows\system32\java.EXE"

TaskScheduler 历史细节

因此,将 java.exe 从 java\bin 目录复制到调度程序正在查找的位置,现在它可以工作了。

或者更新您的任务并提供 java.exe 的完整路径。

您还可以更新环境系统路径以在 java\bin 目录中查找 java,但这必须适用于所有用户,有时这也是错误的。

于 2015-05-20T19:18:01.900 回答