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包,多了路径的信息,可能这就是区别 

  • 相关阅读:
    linux内核之情景分析mmap操作
    linux内核情景分析之匿名管道
    linux内核情景分析之命名管道
    linux内核情景分析之信号实现
    Linux内核情景分析之消息队列
    linux2.4内核调度
    聊聊程序的配置文件
    汽车引擎是怎么工作的
    Go对OO的选择
    为而不争
  • 原文地址:https://www.cnblogs.com/exmyth/p/5779546.html
Copyright © 2011-2022 走看看