Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/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_Classpath_Batch Processing - Fatal编程技术网

如何编写批处理文件来设置类路径和执行java程序

如何编写批处理文件来设置类路径和执行java程序,java,batch-file,classpath,batch-processing,Java,Batch File,Classpath,Batch Processing,我的一些java程序需要这么多jar文件才能执行。为了执行此操作,我可能必须将所有这些jar文件添加到环境变量的classpath变量中,或者每次打开新的cmd提示符时都必须在命令提示符下手动设置classpath。我不想在环境变量中的classpath变量处添加所有jar文件,也不想每次打开new cmd提示符时都手动设置。我想在批处理文件中编写一个脚本来设置类路径,并在那里运行java程序。所以,每当我想运行我的程序时,我都会运行批处理文件并逐个运行我的程序。我已经编写了一个批处理文件来设置

我的一些java程序需要这么多jar文件才能执行。为了执行此操作,我可能必须将所有这些jar文件添加到环境变量的classpath变量中,或者每次打开新的cmd提示符时都必须在命令提示符下手动设置classpath。我不想在环境变量中的classpath变量处添加所有jar文件,也不想每次打开new cmd提示符时都手动设置。我想在批处理文件中编写一个脚本来设置类路径,并在那里运行java程序。所以,每当我想运行我的程序时,我都会运行批处理文件并逐个运行我的程序。我已经编写了一个批处理文件来设置类路径。但是,当我运行这个批处理文件时,它会自动关闭。因此,我无法使用批处理文件设置的类路径,我不得不再次打开新的cmd提示符,设置类路径并运行java程序。要通过批处理文件实现这一点,我如何继续。谢谢你的帮助。谢谢。

他在评论中写道,不需要批处理文件在命令行上指定Java的类路径

查看第7版Java文档页面:

-cp
或更好的可读性
-classpath
,可在命令行上用于定义类路径

可以使用分号作为分隔符来指定多个类的路径

如果一条路径包含空格字符,则必须在所有路径周围使用双引号

例如:

"%JAVA_HOME%\bin\java.exe" -classpath "C:\Java\My First Class;C:\Java\MySecondClass" MyJavaApp
这种方法主要用于使用Java应用程序的快捷方式(*.lnk),该应用程序需要不同于系统范围环境变量CLASSPATH中通常使用和定义的类

但是,对于在控制台窗口中开发和测试Java应用程序,其类列表与系统范围内定义的类列表不同,因此最好使用批处理文件,例如名称为
JavaDevEnv.bat
,代码如下

@echo off
title Java Development Environment
cd /D "Path to\Preferred Working Directory\For\Java\Development"
set "CLASSPATH=C:\Java\My First Class;C:\Java\MySecondClass"
并使用命令行在Windows桌面或Windows“开始”菜单中创建快捷方式

%SystemRoot%\System32\cmd.exe /K "Path to\Batch File\JavaDevEnv.bat"
在快捷方式文件(*.lnk)的属性中定义

还可以在快捷方式文件的属性中使用开始定义工作目录,而不是使用更改目录命令在批处理文件中设置

并且还应在快捷方式文件的属性中写入适当的注释,例如,与在命令
title
上使用的注释相同,该命令将控制台窗口的标题设置为使用此快捷方式的提示


双击此快捷方式将打开一个新的控制台窗口,执行设置窗口标题的批处理文件,Java使用的工作目录和环境变量CLASSPATH在此控制台窗口中执行,然后保持打开状态供用户输入。

批处理文件:以运行使用某些jar文件的类和同一应用程序的类的类文件

从EclipseIDE开始,将所有构建路径条目设置为类路径。当我们通过批处理文件运行它时,我们也需要设置目标应用程序类文件。如下图所示

REM MyApplication\mainClass.bat
REM MyApplication\target\classes-%~dp0target\classes;
mainClass.bat,其中包含

@echo关闭
REM Maven本地存储库路径
SET REPO=%USERPROFILE%\.m2\存储库
REM设置类路径
设置类路径=%REPO%\junit\junit\4.11\junit-4.11.jar;%REPO%\com\oracle\ojdbc5\11.1.0.7.0\ojdbc5-11.1.0.7.0.jar;%~DP0目标\类;%~DP0目标\测试类
java-Xmx256m com.github.yash777.MainClass
Java命令行选项,用于

java-Xdebug-Xrunjdwp:transport=dt_socket,server=y,address=8000

也许这并不能回答您关于在执行批处理后关闭批处理的问题,但我使用类似这样的文件来设置我的
类路径
环境变量:

call-java-class.bat

::
:: %1 directory where all jars are located
:: %2 main class
:: %* program parameters
::
:: JAVA_OPTS ... parameter before main class
::
@echo off

set libdir=%1
shift
set main=%1
shift

set JARS=
set CLASSPATH=

pushd %libdir%
for %%i in (*.jar) do call cpappend.bat %libdir%\%%i
set CLASSPATH=.%JARS%
popd

:: debug
echo %CLASSPATH%
echo %JAVA_HOME%\bin\java %main% %1 %2 %3 %4 %5 %6 %7 %8 %9

%JAVA_HOME%\bin\java %JAVA_OPTS% %main% %1 %2 %3 %4 %5 %6 %7 %8 %9
蝙蝠

@echo off
set JARS=%JARS%;%1
脚本要求在单个目录中设置所有依赖项,并且必须设置JAVA_HOME。然后调用java程序:

call-java-class.bat到lib dir com.foo.bar.Main的路径-帮助


大多数代码取自

,您可以通过调用java可执行文件直接添加带有
-cp
参数的类路径。