使用Spring+Mybatis写一个jar项目,将项目打包后外部配置文件properties无法读取的问题
2019-01-15 18:24
1361 查看
使用Spring+Mybatis写了一个jar项目,使用GUI作为前台页面,将项目打包为jar,依赖包放到jar文件同目录下的libs文件中,配置文件xml和properties放到jar文件同目录下的config文件中,同时生成logs文件夹放置日志文件。文件目录如下图
刚开始打包之后出现无法读取配置文件的情况,错误为FileNotFoundException,将application.xml的读取路径改为绝对路径后可以读取xml文件
[code]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
[code]<context:property-placeholder location="classpath:db.properties"/> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"> <property name="driverClassName" value="${oracle.driverClassName}"></property> <property name="url" value="${oracle.url}"></property> <property name="username" value="${oracle.username}"></property> <property name="password" value="${oracle.password}"></property> </bean>
将代码中的classpath换为classpath*之后,程序执行不报错了,但是bean中的占位符${}直接按照字符串输出,应该也是没有读取到文件导致的
后来从百度了各种方法都没有解决问题,直到看到了这篇博客 Spring 中注入bean的properties配置文件位置问题解决 ,按照其中的方法对xml中的配置进行更改后问题成功解决
更改后的代码
[code]<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> <property name="location" value="file:${user.dir}/config/db.properties"/> </bean> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"> <property name="driverClassName" value="${oracle.driverClassName}"></property> <property name="url" value="${oracle.url}"></property> <property name="username" value="${oracle.username}"></property> <property name="password" value="${oracle.password}"></property> </bean>
其中systemPropertiesModeName的值SYSTEM_PROPERTIES_MODE_OVERRIDE是指可以从JVM的数据中获取信息,当加上这个属性的设置之后${user.dir}就会获取到当前执行的jar文件的路径。
至此问题成功解决
相关文章推荐
- 基于maven管理的项目中spring+mybatis配置数据源读取不到properties属性文件的问题
- SpringMVC + mybatis 无法读取JAR包中的XML配置文件问题
- SpringMVC + mybatis 无法读取JAR包中的XML配置文件问题
- SpringMVC + mybatis 无法读取JAR包中的XML配置文件问题
- Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
- SpringMVC + mybatis 无法读取JAR包中的XML配置文件问题
- 关于Spring与mybatis整合无法读取配置文件的问题
- 解决spring-boot项目中无法读取yml配置文件属性问题
- 使用springboot框架写项目打包jar发布后读取项目下静态文件异常
- spring中mybatis配置数据源读取不到properties属性文件的问题
- 解决springboot部署时使用外部文件配置项目参数的问题
- Spring配置文件打包到jar中无法加载问题之解决方案
- 可以从Jar外部加载JDBC.properties的Spring-mybatis配置文件
- 解决“Spring 使用MapperScannerConfigurer无法读取*.properties文件"的问题
- 解决Spring配置文件无法读取properties属性问题
- 可以从Jar外部加载JDBC.properties的Spring-mybatis配置文件
- J2EE项目中使用Spring 4及.properties文件UTF-8编码问题
- Spring+Mybatis整合读取Jar中的mapper配置文件
- Spring中使用classpath*加载配置文件,jar包中的配置文件不加载问题
- spring+mybatis在读取配置文件时不识别占位符的问题。