Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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_Batch File - Fatal编程技术网

Java 批处理文件错误-线程中出现异常;“主要”;但在没有批处理文件的情况下编译和运行良好

Java 批处理文件错误-线程中出现异常;“主要”;但在没有批处理文件的情况下编译和运行良好,java,batch-file,Java,Batch File,我正在尝试创建一个批处理文件来自动编译和执行java程序。以下是我的批处理脚本: @echo off cd X:\ echo Compile/Execute Java echo Author: Phil Eaton echo Created: 09-28-2012 set /P file=File name: %=% set java = %file%.java javac %java% java %file% set /P quit= 但是,它返回“线程中的异常”main“java.lang

我正在尝试创建一个批处理文件来自动编译和执行java程序。以下是我的批处理脚本:

@echo off
cd X:\
echo Compile/Execute Java
echo Author: Phil Eaton
echo Created: 09-28-2012
set /P file=File name: %=%
set java = %file%.java
javac %java%
java %file%
set /P quit=

但是,它返回“线程中的异常”main“java.lang.NoClassDefFoundError:HelloWorld”,其中HelloWorld是用户输入。但是,当我在命令提示符下运行javac HelloWorld.java时,它可以很好地编译,当我运行java HelloWorld时,它也可以很好地运行。有什么建议吗?谢谢

set
不允许在
=
周围使用空格:

set java=%file%.java 

set
不允许在
=
周围使用空格:

set java=%file%.java 
建议:

@rem Compile and run Java program
@if "%1"=="" goto USAGE

javac %1%.java
java %1%
@goto THE_END

:USAGE
@echo EXAMPLE USAGE: doit HelloJava
@goto THE_END

:THE_END
建议:

@rem Compile and run Java program
@if "%1"=="" goto USAGE

javac %1%.java
java %1%
@goto THE_END

:USAGE
@echo EXAMPLE USAGE: doit HelloJava
@goto THE_END

:THE_END

只需删除空格:

set java=%file%.java
当空格存在时,
java
变量将为空。或者,您可以使用:

set java = "%file%.java"

只需删除空格:

set java=%file%.java
当空格存在时,
java
变量将为空。或者,您可以使用:

set java = "%file%.java"

HelloWorld文件是否位于x:\?否则,您可能需要传递一个classpath或sourcepath选项(),您如何处理
%=%
业务?HelloWorld文件是否位于x:\?否则,您可能需要传递一个classpath或sourcepath选项(),您使用
%=%
business?+1做什么,但从技术上讲,SET确实允许空格。
=
之前的空格将成为变量名的一部分,
=
之后的空格将成为值的一部分。+1,但从技术上讲,SET允许空格。
=
之前的空格将成为变量名的一部分,而
=
之后的空格将成为值的一部分。