从bat文件设置classpath不起作用

时间:2019-01-29 09:17:49

标签: java windows batch-file

因此,当我手动启动桌面上的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文件的第一行中将类路径手动设置为桌面。

2 个答案:

答案 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...]

希望这会有所帮助。