数据加载中……
Java 载入Jar内资源问题的探究(后续)
 在《Java 载入Jar内资源问题的探究》这个文档贴出来以后,有朋友给了我反馈,最终知道了问题就出现在JarOutputstream输出的时候,虽然支持直接写入目录中的文件来同时产生目录和文件,但是这样在jar中目录就不是一个有效的entry,因此在资源定位的时候就无法得到,因此必须也把目录作为entry写入,这样才会正常定位资源。这个问题作了测试以后反馈到我们的工具开发人员那边,做了修改以后一切都恢复正常,细节决定成败,那么一点细微的差异,会让各种框架都无法正常运作。

代码修改如下:

JarOutputStream jos;

       try

       {

           jos = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(file)));

           String f = "spring/sip-analyzer-dataSource.xml";

           String dir = "spring/";
           JarEntry je1 = new JarEntry(dir);
           jos.putNextEntry(je1);

   
     
    
           JarEntry je =
new JarEntry(f);

           jos.putNextEntry(je);

           BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:/work/sip3/analyzer/src/conf.test/spring/sip-analyzer-dataSource.xml"));

           int i = 0;

           while ((i=bis.read())!=-1)

           {

              jos.write(i);

           }

           bis.close();

           jos.closeEntry();

           jos.close();

} catch  ...

posted on 2008-06-03 14:24 岑文初 阅读(1717) 评论(3)  编辑  收藏

评论

# re: Java 载入Jar内资源问题的探究(后续) 2008-06-03 17:52 找人骂

URL url = Thread.currentThread().getClass().getResource("/org/apache/cxf/APIMessages.properties");
url = ResourceUtils.extractJarFileURL(url);
System.out.println(url.getProtocol());
File file = ResourceUtils.getFile(url);
String text = FileCopyUtils.copyToString(new FileReader(file));

如果没有这句会报错:
ResourceUtils.extractJarFileURL(url);
  回复  更多评论    

# re: Java 载入Jar内资源问题的探究(后续)[未登录] 2008-06-03 18:13 wonder

不错,学习了。
  回复  更多评论    

# re: Java 载入Jar内资源问题的探究(后续) 2008-07-26 16:04 zhuxing

俺也遇到过entry没有显示写入,访问出问题了
  回复  更多评论    

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航: