zoukankan      html  css  js  c++  java
  • 通过 getResources 找不到jar包中的资源和目录的解决方法

    http://my.oschina.net/sub/blog/184074

    今天碰到一个怪问题:

    原本跑的好好的代码,打成 jar 包就不能运行了。

    问题出在,代码中有一段自动扫描 classpath 下面的指定 package 的 class

    ClassLoader loader = Thread.currentThread().getContextClassLoader();
    String packageDirName = packageName.replace('.', '/');
    Enumeration<URL> dirs = loader.getResources(packageDirName);

    竟然得到的 dirs 为空???  
    打包前直接在 classes 目录运行没问题,打成 jar 就出问题了。


    经过研究发现,是 eclipse 打的 jar 包有问题。
    原来在 eclipse 打 jar 包时未勾选 “Add directory entries”选项引起的。
    勾上,打包,问题解决。

    另外注意: jar包的文件名只能是英文,不能包含其他如“-”之类的符号。

    ========================

    附上一段别人发现的区别: http://kyfxbl.iteye.com/blog/1675368

    用jar命令,比较了一下两种方法打出的jar包的区别,如图: 

     

     

    可以看到,勾选了add directory entries之后打出的jar包,多了路径的信息,可能这就是区别 

  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/exmyth/p/5779546.html
Copyright © 2011-2022 走看看