因此,当我手动启动桌面上的bat文件时,它可以工作,因为通过其图标执行bat文件使用的是icon(file)目录,即“ C:\ Users \ Michael \ Desktop”。
set CLASSPATH = %~dp0 &:: %~dp0 stands for the directory of the bat file
java InitArray 5 0 4 &:: comment
pause
当我从其桌面图标运行上面的bat文件(InitArray.bat)时,它会起作用。
java InitArray 5 0 4 &:: comment
pause
当我从其桌面图标运行上面的bat文件(test.bat)时,它可以工作。
但是,当我从任务计划程序运行InitArray.bat时,它将使用目录“ C:\ WINDOWS \ system32”。但这不应该是一个问题,因为bat文件要做的第一件事是“设置CLASSPATH = C:\ Users \ Michael \ Desktop \”。
这是任务计划程序尝试运行InitArray.bat的结果。
C:\WINDOWS\system32>set CLASSPATH = C:\Users\Michael\Desktop\
C:\WINDOWS\system32>java InitArray 5 0 4
Error: Could not find or load main class InitArray
C:\WINDOWS\system32>pause
Press any key to continue . . .
现在,我知道我可以通过将“ C:\ Users \ Desktop \”添加到环境变量CLASSPATH中来解决此问题。但是我不需要这样做,因为在尝试运行Java类之前,我在bat文件的第一行中将类路径手动设置为桌面。
答案 0 :(得分:2)
设置变量时,从变量名的开头一直到最后键入的字符都用作变量名的一部分,位于=
之前,而值位于=
之后。所以:
set CLASSPATH = Somepath
最后将得到一个变量名%CLASSPATH %
(请注意尾随空格)和值Somepath
(请注意起始空格)。
即使您在该值之后添加一个偶然的空格,它也会成为其中的一部分,因此这
set CLASSPATH=Somepath
的结尾将带有空格Somepath
因此,请始终在=
之前或之后保留空格,并始终将代码用双引号引起来以消除空格:
set "CLASSPATH=Somepath"
或者在您的实际情况下,它应该类似于:
set "CLASSPATH=%~dp0"
答案 1 :(得分:0)
与Java执行命令一起设置CLASSPATH或使用cd命令更改目录。
cd /path_to_required_folder // set current directory
java -cp /classpath_location/ test.jar your.package.MainClass [args...]
希望这会有所帮助。