首先声明一下,我问的不是java如何读取properties文件,这个问题非常简单,肯定不会要求高手解答。恕我直言,因为有些人为了要分,看到题目之后,
就在其他网上复制一大串代码,结果别人的问题和他的“回答”简直是牛头不对马嘴,所以这种人我希望你们自重。问题如下:
我现在有两个jar包(test1.jar,test2.jar),并且每个jar里面都有一个className.properties这个文件,现在这两个jar都加到我的工程中,
我想得到这两个jar的className.properties,怎么获取呢?就是我要得到两个properties,而且这两个是放在不同的jar里面,且名字相同。请高手解答。
就在其他网上复制一大串代码,结果别人的问题和他的“回答”简直是牛头不对马嘴,所以这种人我希望你们自重。问题如下:
我现在有两个jar包(test1.jar,test2.jar),并且每个jar里面都有一个className.properties这个文件,现在这两个jar都加到我的工程中,
我想得到这两个jar的className.properties,怎么获取呢?就是我要得到两个properties,而且这两个是放在不同的jar里面,且名字相同。请高手解答。
不过如果这2个jar 是自己写的话 可以让2个jar提供个public方法
而程序要想获得properties的属性的话直接调用方法就行
<param-name>log4jFile</param-name>
<param-value>/WEB-INF/conf/log4j.properties</param-value>
</context-param>你有两个jar包 名字总会不同吧在xml文件中配置下 去顶你所需要的哪个jar包里的properties就可以
根据路径可以选择用JarFile的getInputStream,或者Class、ClassLoader的getResourceAsStream
情况不一样。不一定通用。 Class<?> clazz = Native.class;//某个jar里面的某个class
URL url = clazz.getProtectionDomain().getCodeSource().getLocation();
JarFile jar = new JarFile(new File(url.toURI()));
InputStream in = jar.getInputStream(jar.getJarEntry("META-INF/MANIFEST.MF"));
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Enumeration;
import java.util.Properties;public class Test { public static void main(String[] args) throws IOException {
Enumeration<URL> ps = Thread.currentThread().getContextClassLoader().getResources("config.properties");
while(ps.hasMoreElements()) {
InputStream in = null;
try {
in = ps.nextElement().openStream();
Properties p = new Properties();
p.load(in);
System.out.println(p.getProperty("config.dir"));
} finally {
closeIO(in);
}
}
}
private static void closeIO(Closeable io) {
if(io != null) {
try {
io.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
JAX-WS 的 javax.xml.ws.spi.Provider 类
JDBC 4 中自行寻找 Driver 驱动
Servler 2.4 中的 JSP 标签描述 .tld 文件的加载等等,基本上都是采用这种方式进行加载的。
1).正确读取到两个jar文件的路径
2).将jar做为zip文件进行读取
3).找到和className.properties相同的Entry值时读取出来
4).你想做什么由你决定
5).Over