首先声明一下,我问的不是java如何读取properties文件,这个问题非常简单,肯定不会要求高手解答。恕我直言,因为有些人为了要分,看到题目之后,
就在其他网上复制一大串代码,结果别人的问题和他的“回答”简直是牛头不对马嘴,所以这种人我希望你们自重。问题如下:
我现在有两个jar包(test1.jar,test2.jar),并且每个jar里面都有一个className.properties这个文件,现在这两个jar都加到我的工程中,
我想得到这两个jar的className.properties,怎么获取呢?就是我要得到两个properties,而且这两个是放在不同的jar里面,且名字相同。请高手解答。

解决方案 »

  1.   

    不知道怎么读取jar文件里面的文件
    不过如果这2个jar 是自己写的话 可以让2个jar提供个public方法
    而程序要想获得properties的属性的话直接调用方法就行
      

  2.   

    <context-param>
    <param-name>log4jFile</param-name>
    <param-value>/WEB-INF/conf/log4j.properties</param-value>
    </context-param>你有两个jar包  名字总会不同吧在xml文件中配置下  去顶你所需要的哪个jar包里的properties就可以
      

  3.   

    这里要先看是否两个Properties路径都一样。如果是则比较麻烦,你可能得自已根据ZipInputStream去获取相应的ZipEntry来读取数据。
      

  4.   

    各个className.properties的路径是什么?
    根据路径可以选择用JarFile的getInputStream,或者Class、ClassLoader的getResourceAsStream
      

  5.   

    Properties文件都在包的根目录里面。
      

  6.   

    最大的问题,就是怎么得到jar的File。
    情况不一样。不一定通用。        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"));
      

  7.   

    没啥好说的,直接贴代码吧:import java.io.Closeable;
    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();
                }
            }
        }
    }
      

  8.   

    J2SE 以及 J2EE API 的 Service Provider 结构就是这样读取 META-INF/services 下面文件的。比如:JPA 的 javax.persistence.Persistence 类
    JAX-WS 的 javax.xml.ws.spi.Provider 类
    JDBC 4 中自行寻找 Driver 驱动
    Servler 2.4 中的 JSP 标签描述 .tld 文件的加载等等,基本上都是采用这种方式进行加载的。
      

  9.   

    步骤如下:
    1).正确读取到两个jar文件的路径
    2).将jar做为zip文件进行读取
    3).找到和className.properties相同的Entry值时读取出来
    4).你想做什么由你决定
    5).Over
      

  10.   

    java包的名字不是不一样吗?带全路径~