使用Spring+Mybatis写一个jar项目,将项目打包后外部配置文件properties无法读取的问题

使用Spring+Mybatis写了一个jar项目,使用GUI作为前台页面,将项目打包为jar,依赖包放到jar文件同目录下的libs文件中,配置文件xml和properties放到jar文件同目录下的config文件中,同时生成logs文件夹放置日志文件。文件目录如下图

使用Spring+Mybatis写一个jar项目,将项目打包后外部配置文件properties无法读取的问题_第1张图片

刚开始打包之后出现无法读取配置文件的情况,错误为FileNotFoundException,将application.xml的读取路径改为绝对路径后可以读取xml文件

String path = System.getProperty("java.class.path");
int firstIndex = path.lastIndexOf(System.getProperty("path.separator")) + 1;
int lastIndex = path.lastIndexOf(File.separator) + 1;
path = path.substring(firstIndex, lastIndex);

ApplicationContext ac = new ClassPathXmlApplicationContext("file:" + path + "applicationcontext.xml");

但是xml中的数据库配置文件db.properties文件无法读取,同样为FileNotFound



        
        
        
        

将代码中的classpath换为classpath*之后,程序执行不报错了,但是bean中的占位符${}直接按照字符串输出,应该也是没有读取到文件导致的

后来从百度了各种方法都没有解决问题,直到看到了这篇博客  Spring 中注入bean的properties配置文件位置问题解决  ,按照其中的方法对xml中的配置进行更改后问题成功解决

更改后的代码


        
        


        
        
        
        

其中systemPropertiesModeName的值SYSTEM_PROPERTIES_MODE_OVERRIDE是指可以从JVM的数据中获取信息,当加上这个属性的设置之后${user.dir}就会获取到当前执行的jar文件的路径。

至此问题成功解决

你可能感兴趣的:(问题)