如何将配置文件放在可执行jar文件外面.

时间:2022-12-29 23:54:06
用eclipse 开发的程序,配置文件SMPProxy.xml 在src目录下.
public static String configFile = "/SMProxy.xml";

导出可执行jar文件后,每次更改配置文件都要从jar中取出,改完再放进去,操作起来很麻烦.能不能把这个配置文件放在可执行的jar文件外面啊? 如果可以,在eclipse 里面要怎么写?

10 个解决方案

#1


放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar  xxx.jar -....

#2


引用 1 楼 boyu_song 的回复:
放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar  xxx.jar -....

public static void main(String[] args){
    ...
    public static String configFile = args[0];
    ...

}

jar  xxx.jar xxx.xml

是这意思吗?

#3


@echo off
rem 1. config文件夹路径
set CONFIG_PATH=%1
rem 3. 构建名称
set BUILD_NAME=%2
rem 4. 构建编号
set BUILD_NUMBER=%3
rem 5. 版本号
set VERSION_NUMBER=%4


set classpath=lib\activation-1.1.jar;lib\dom4j-1.6.1.jar;lib\log4j.jar;lib\mail-1.4.2.jar;lib\sqljdbc.jar;lib\CIEmail.jar;
java www.email.main.Main %CONFIG_PATH% %BUILD_NAME% %BUILD_NUMBER% %VERSION_NUMBER%

根这种方式差不多

#4


引用 2 楼 jinzongnan 的回复:
引用 1 楼 boyu_song 的回复:

放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar xxx.jar -....

public static void main(String[] args){
  ...
  public static String configFile = args[0];
  ...

}

jar xxx.jar xx……



嗯,你自己尝试下

#5


引用 1 楼 boyu_song 的回复:
放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar  xxx.jar -....


可以试试

#6


引用 3 楼 abstruct 的回复:
@echo off
rem 1. config文件夹路径
set CONFIG_PATH=%1
rem 3. 构建名称
set BUILD_NAME=%2
rem 4. 构建编号
set BUILD_NUMBER=%3
rem 5. 版本号
set VERSION_NUMBER=%4


set classpath=lib\activation-1.1.jar;lib\do……

我想要的是:
配置文件放在jar外面.直接运行jar的时候读配置文件内容,再作处理.
配置文件的名字确定,路径与jar在同一目录,hardcode在jar里面.

#7


要么你就在代码里面把配置文件的路径写死咯,你想在jar里面读取jar外面的配置文件基本上只有靠绝对路径。相对路径是没办法的,即使你外面的与里面的结构一样。

#8


引用 7 楼 abstruct 的回复:
要么你就在代码里面把配置文件的路径写死咯,你想在jar里面读取jar外面的配置文件基本上只有靠绝对路径。相对路径是没办法的,即使你外面的与里面的结构一样。

有没有什么办法获得jar的当前路径.

#9


直接从jar里面考出来就可以了

#10


引用 9 楼  的回复:
直接从jar里面考出来就可以了

代码不用做任何改动,拷出配置文件,删掉jar里面的配置文件.已经试过log4j.properties,没问题.

#1


放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar  xxx.jar -....

#2


引用 1 楼 boyu_song 的回复:
放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar  xxx.jar -....

public static void main(String[] args){
    ...
    public static String configFile = args[0];
    ...

}

jar  xxx.jar xxx.xml

是这意思吗?

#3


@echo off
rem 1. config文件夹路径
set CONFIG_PATH=%1
rem 3. 构建名称
set BUILD_NAME=%2
rem 4. 构建编号
set BUILD_NUMBER=%3
rem 5. 版本号
set VERSION_NUMBER=%4


set classpath=lib\activation-1.1.jar;lib\dom4j-1.6.1.jar;lib\log4j.jar;lib\mail-1.4.2.jar;lib\sqljdbc.jar;lib\CIEmail.jar;
java www.email.main.Main %CONFIG_PATH% %BUILD_NAME% %BUILD_NUMBER% %VERSION_NUMBER%

根这种方式差不多

#4


引用 2 楼 jinzongnan 的回复:
引用 1 楼 boyu_song 的回复:

放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar xxx.jar -....

public static void main(String[] args){
  ...
  public static String configFile = args[0];
  ...

}

jar xxx.jar xx……



嗯,你自己尝试下

#5


引用 1 楼 boyu_song 的回复:
放在外面的话,你要在执行时加上参数,把你的xml文件指定

jar  xxx.jar -....


可以试试

#6


引用 3 楼 abstruct 的回复:
@echo off
rem 1. config文件夹路径
set CONFIG_PATH=%1
rem 3. 构建名称
set BUILD_NAME=%2
rem 4. 构建编号
set BUILD_NUMBER=%3
rem 5. 版本号
set VERSION_NUMBER=%4


set classpath=lib\activation-1.1.jar;lib\do……

我想要的是:
配置文件放在jar外面.直接运行jar的时候读配置文件内容,再作处理.
配置文件的名字确定,路径与jar在同一目录,hardcode在jar里面.

#7


要么你就在代码里面把配置文件的路径写死咯,你想在jar里面读取jar外面的配置文件基本上只有靠绝对路径。相对路径是没办法的,即使你外面的与里面的结构一样。

#8


引用 7 楼 abstruct 的回复:
要么你就在代码里面把配置文件的路径写死咯,你想在jar里面读取jar外面的配置文件基本上只有靠绝对路径。相对路径是没办法的,即使你外面的与里面的结构一样。

有没有什么办法获得jar的当前路径.

#9


直接从jar里面考出来就可以了

#10


引用 9 楼  的回复:
直接从jar里面考出来就可以了

代码不用做任何改动,拷出配置文件,删掉jar里面的配置文件.已经试过log4j.properties,没问题.