放翁(文初)的一亩三分地

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  210 随笔 :: 1 文章 :: 320 评论 :: 0 Trackbacks
 在《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 岑文初 阅读(2325) 评论(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没有显示写入,访问出问题了  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: