当前位置: 首页 > 知识库问答 >
问题:

从bat文件设置类路径无效[重复]

邬阳
2023-03-14

因此,当我手动启动桌面上的bat文件时,它能够正常工作,因为通过其图标执行bat文件使用图标(文件)的目录,即“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文件做的第一件事是“set 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 . . .

现在,我知道我可以通过向环境变量classpath添加“C:\users\desktop\”来解决这个问题。但我不需要这样做,因为在尝试运行java类之前,我在bat文件的第一行手动将classpath设置为desktop。

共有1个答案

贺君浩
2023-03-14

当设置变量时,从变量名的开始,直到最后一个键入的字符,在=之前和=之后的值之前,都用作变量名的一部分。所以:

set CLASSPATH = Somepath

将以变量名%classpath%(注意尾随空格)和值somepath(注意起始空格)结束。

即使在值后面添加意外空格,它也将成为值的一部分,因此这个集classpath=somePath将以带有尾随空格的值somePath结束

因此,在=之前或之后始终不留空格,并且始终将代码括在双引号中以消除空格:

set "CLASSPATH=Somepath"

或者在您的实际情况中,它应该看起来像:

set "CLASSPATH=%~dp0"
 类似资料:
  • 问题内容: 从命令行,如何设置Java CLASSPATH选项以指向包含多个jar文件的一个或多个目录?是否有通配符支持递归目录和子目录? (我的JAR文件在几个子目录中排序。) 问题答案: 如果您使用的是Java 6或更高版本,则可以使用以下形式的通配符: 如果要添加所有子目录:lib \ a \,lib \ b \,lib \ c \,则除了以下以外,没有其他机制: 您想要完成的工作没有类似或

  • 问题内容: 我是Java的新手,我不确定如何从单独的程序jar中访问位于特定目录中的类文件。 例如,我在/中有一个第三方jar文件,该文件应该加载/mylib/MyClass.class中的MyClass,因此我尝试运行: 但我得到了错误: 我究竟做错了什么? 问题答案: 当您使用,然后 只 在中定义的属性文件里面的文件会影响到类路径。 它还将忽略该参数(或更具体地说:将其解释为)中定义的主类的参

  • 我刚刚使用一个xml配置文件将log4j转换为log4j2。一切正常,只是我似乎无法使用属性文件设置日志文件的路径。 这是一个Spring MVC应用程序,我有一个文件,位于文件夹中,以及log4j2.xml,i18n消息和其他属性文件。它有一个简单的条目:。我看过其他帖子,只是不知道如何正确配置log4j2。这是我所拥有的: 错误是: 替换实际路径有效,例如。, <代码> 我被捆绑语法的正确域部

  • #include <stdio.h> #include <time.h> int main(void) { time_t now = time(NULL); struct tm local = {0}; struct tm gmt = {0}; localtime_r(&now, &local); gmtime_r

  • 问题内容: 我有一个独立的Java项目。我已经执行了Maven全新安装。现在,我通过命令提示符进入target \ classes文件夹,并在classpath中设置所有必需的文件。现在我执行主类。结果正在显示。 现在,我通过命令提示符移回目标文件夹,并尝试执行jar文件(jar文件具有在其中定义了主类的清单文件)。 现在,我得到以下异常。我也从上面的语句中删除了classpath属性,但仍然遇到

  • 我尝试使用命令$ionic平台添加Android作为平台添加Android,当我尝试仿真时,它显示了这个错误,如何处理?因为我是第一次使用mac,我不知道如何在mac OS中处理它。