BAT文件创建Java CLASSPATH

Bin*_*mas 39 java windows command-line batch-file

我想在Windows上分发用Java编写的命令行应用程序.

我的应用程序作为zip文件分发,它有一个lib目录条目,其中包含调用我的主类所需的.jar文件.目前,对于Unix环境,我有一个shell脚本,它通过附加lib目录中的所有文件来调用带有CLASSPATH的java命令.

我怎么写具有类似功能的.BAT文件?什么是Windows世界中的find Unix命令的等价物?

Hen*_*y B 65

您想在批处理脚本中使用for循环

 @echo off
 setLocal EnableDelayedExpansion
 set CLASSPATH="
 for /R ./lib %%a in (*.jar) do (
   set CLASSPATH=!CLASSPATH!;%%a
 )
 set CLASSPATH=!CLASSPATH!"
 echo !CLASSPATH!
Run Code Online (Sandbox Code Playgroud)

当我在寻找一个批处理脚本来遍历目录中的所有文件时,这真的帮助了我,它是关于删除文件但它非常有用.

用于删除空目录的单行批处理脚本

说实话,使用Jon的答案,如果所有文件都在一个目录中,那么这可能会更好,但这可能会帮助你在另一个时间.


Jon*_*eet 29

你为什么要用find?想必你提前知道你的jar文件需要的所有库,为什么不列出它们呢?

或者,您可以随时使用-Djava.ext.dirs=lib并让它以这种方式获取所有内容.


bas*_*ero 18

从6.0开始,Java支持通配符类路径.

Java命令行类路径语法


Eri*_*sen 5

如果您希望CLASSPATH设置保留在脚本之外并且未使用/ V启动shell,则可以执行以下操作:

@echo off
FOR /R ./lib %%a in (*.jar) DO CALL :AddToPath %%a
ECHO %CLASSPATH%
GOTO :EOF

:AddToPath
SET CLASSPATH=%1;%CLASSPATH%
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)

当您在命令行上玩游戏时,可用于设置环境.