JAVA工程打成jar包找不到配置文件路径

       上篇文章说过配置文件读取的公用方法,但是目前工程打成jar包后,直接用jdk执行发现系统找不到配置文件路径,意识到这种读取配置文件的方式可能存在一定的局限性,因此搜索一些资料对配置文件读取方式作出如下修改。

public class PropertiesLoader {
	
	private final static Logger LOG = Logger.getLogger(PropertiesLoader.class);
	public static Properties properties;
	private static String filePath = "/resource/";
	public PropertiesLoader(String fileName) {
		InputStream in = null;
		try{
			properties = new Properties();
			in = PropertiesLoader.class.getClassLoader().getClass().getResourceAsStream(filePath+fileName);
			properties.load(in);
		}catch(Exception e){
			e.printStackTrace();
			LOG.error("配置文件解析错误");
		}finally{
			if(in != null){
				try{
					in.close();
				}catch(Exception e){
					e.printStackTrace();
					LOG.error("文件输入流解析错误");
				}
			}
		}
		
	}
	
	public String getProperty(String key) {
		String value = properties.getProperty(key);
		return value;
	}
}

    filePath最前面的“ / ”代表工程的根目录,相当于上篇文章所说的src目录,如果前面没有 “ / ” 则代表当前类的目录,将先前的方法替换成InputStream is = this.getClass().getResourceAsStream(fileName)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在打成 jar 包时,配置的 xml 文件路径在 classpath 下,但是在运行时出现了不到文件的错误,可以尝试以下几个步骤: 1. 确认 classpath 是否正确 在打包时,需要将 xml 文件配置到 classpath 中,可以在 MANIFEST.MF 文件中添加 Class-Path 配置项,指定 xml 文件所在的相对路径,例如: ``` Class-Path: config/ ``` 这样,在运行 jar 包时,JVM 会自动将 config 目录下的文件添加到 classpath 中。需要注意的是,Class-Path 的路径是相对于 jar 包所在的目录的。 2. 确认 xml 文件路径是否正确 在加载 xml 文件时,需要使用相对路径或绝对路径,如果使用相对路径,需要相对于 classpath 的根目录,例如: ```java InputStream is = getClass().getResourceAsStream("/config/config.xml"); ``` 这里假设 xml 文件在 jar 包的 config 目录下。需要注意的是,路径前面需要加上 "/",表示相对于 classpath 的根目录。 如果使用绝对路径,需要使用 File 类的构造函数,例如: ```java File configFile = new File("config/config.xml"); InputStream is = new FileInputStream(configFile); ``` 这里假设 xml 文件在 jar 包的同级目录下的 config 目录下。 3. 确认 xml 文件是否被打包进 jar 包 在打包时,需要将 xml 文件打包进 jar 包中,可以使用 Maven 插件或者 Gradle 插件来完成。如果手动打包,需要确保 xml 文件被正确地添加到 jar 包中。 如果以上步骤都没有解决问题,可以尝试在运行时输出 classpath,查看 xml 文件是否被正确地添加到 classpath 中。例如: ```java String classpath = System.getProperty("java.class.path"); System.out.println(classpath); ``` 希望以上步骤能够帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值