恩,有好几个问题一直没有搞清楚,哪为大人帮忙解释下。我用eclipse开发。src
|____packagename--*.java
|_____config.properties
|_____applicationContext.xml
上面是目录结构,配置文件都放在src目录下。
类中加载配置文件代码:
contextPaths = new String[] {"applicationContext.xml"};
ctx = new ClassPathXmlApplicationContext(contextPaths);
读取配置文件
URL path = ClassLoader.getSystemResource("config.properties");
pro.load(new FileInputStream(path.toURI().getPath()));
在eclipse调试的时候一切正常。但是,当我发布的时候把.class文件都放到jar里面,我不想把配置文件,包括Spring的配置文件都放入和jar同级的目录,结构如下。
folder
|_____demo.jar
|_____aplicationContext.xml
|_____config.properties
|_____lib目录所有有几个问题:
1.我要把配置文件放到jar同级的目录,我上面的读取配置文件的代码,应该怎么修改?2.我试着把配置文件一起打包的jar文件中,Spring的配置文件正常,但是读取properties的代码URL path = ClassLoader.getSystemResource("config.properties");
pro.load(new FileInputStream(path.toURI().getPath()));
出错,提示。demo.jar!/config.properties找不到。搞不太清楚,这些路径到底什么关系请高手解答。
|____packagename--*.java
|_____config.properties
|_____applicationContext.xml
上面是目录结构,配置文件都放在src目录下。
类中加载配置文件代码:
contextPaths = new String[] {"applicationContext.xml"};
ctx = new ClassPathXmlApplicationContext(contextPaths);
读取配置文件
URL path = ClassLoader.getSystemResource("config.properties");
pro.load(new FileInputStream(path.toURI().getPath()));
在eclipse调试的时候一切正常。但是,当我发布的时候把.class文件都放到jar里面,我不想把配置文件,包括Spring的配置文件都放入和jar同级的目录,结构如下。
folder
|_____demo.jar
|_____aplicationContext.xml
|_____config.properties
|_____lib目录所有有几个问题:
1.我要把配置文件放到jar同级的目录,我上面的读取配置文件的代码,应该怎么修改?2.我试着把配置文件一起打包的jar文件中,Spring的配置文件正常,但是读取properties的代码URL path = ClassLoader.getSystemResource("config.properties");
pro.load(new FileInputStream(path.toURI().getPath()));
出错,提示。demo.jar!/config.properties找不到。搞不太清楚,这些路径到底什么关系请高手解答。
String fileSeparator = System.getProperty("file.separator"); // 为了在linux和windows下通用,因为两个系统的分隔符不一样,一个是/,另一个是\,这个东西让系统来为我们自己决定好一些。
InputStream is = this.getClass().getClassLoader().getResourceAsStream("src" + fileSeparator + "packageName" + fileSeparator + "fileName");
这样做,应该没有问题了。
继续,等待。。
---------------------------------
这没办法了,你的程序里面的写法就不对,当然没办法了,因为程序里读取的代码就错了,外面怎么做也不行。
Resource rs = new FileSystemResource("这里可以是绝对路径");
BeanFactory factory = new XmlBeanFactory(rs);
接口 hello = (接口)factory.getBean("hello");
(...)context.getBean("...");
这个不是可以在读取ClassPath路径中的文件吗?可不可以理解?
我的意思,是不是可以在demo.jar的MANIFEST.MF文件中class-path中加入applicationContext.xml,然后打包的时候,不把上面提到的配置文件加入到jar中,把这些文件放到和demo.jar同目录。to zxh2208180(九天玄狐):恩,不是很熟悉,照着文档,第一次在使用Spring.刚才没有理解到你的意思,绝对路径应该可以实现的。我试试...
Inhibitory() :如果程序有什么问题,请帮忙指出。多谢二位的耐心
有办法?<bean id="messageSource" class="org.springframework.context.support.Resourc eBundleMessageSource">
<property name="basename"><value>message</value></property>
</bean>