如何在运行java应用程序时将classpath放在属性文件中?

时间:2015-02-05 09:05:35

标签: java batch-file jar

我有一个java,我想用参数和类路径运行, 所以我创建了这个启动脚本:

java -Denv=qa -Duser.timezone="GMT" -Dtest.services.mock=true -classpath ".;D:\\batch_server\\batch\\lib\\*;batch-server.jar" com.batch.servlet.StartBatch start

哪种方式非常好。

现在我想更改要写入的类路径,以便每个jar文件都会被编写,例如 -

-classpath ".;D:\\batch_server\\batch\\lib\\log4j.jar;D:\\batch_server\\batch\\lib\\mokito.jar;  and so on

我的问题是我可以将类路径放入属性文件中,这样每次我添加\删除某个jar时我都可以更改它吗?

2 个答案:

答案 0 :(得分:2)

不,你不能。考虑使用收集所有jar的BAT文件并构建类路径:

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

答案 1 :(得分:0)

在您的情况下,您可以将tour classpath写入batch / shell scipt(取决于您的平台)。由于您使用的是\;,因此批处理文件与您相关。

SET CP=log4j.jar
SET CP=%CP%;mkito.jar
.....

你肯定也可以将jar文件写入属性文件中,但是windows shell不知道这种格式,所以你必须编写批处理文件来解析属性文件格式,这种文件格式不是那么简单但可行。

在属性文件中保存jar的其他方法需要更改您的应用程序。您可以创建自定义类加载器,从proprties文件中提到的jar加载类。

但我不确定你真的需要这个。批处理文件IMHO是您的解决方案。