lishunli / nutz

Automatically exported from code.google.com/p/nutz
0 stars 0 forks source link

Jar文件中的ioc配置文件 #156

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
问题产生的条件:
JsonLoader从classpath中找ioc配置文件时,如果该文件被打包到jar�
��面,就无法读取了。

发生问题的调用代码:
private void load(Map<String, Map<String, Object>> map, File[] files) {
  for (File f : files) {
    // 如果是目录,读取内部所有 .json 和 .js 文件
    if (f.isDirectory()) {
        loadFromDir(map, f);
    }
    // 如果是文件,加载其内容
    else if (f.isFile()) {
        map.putAll(buildMap(f));
    }
  }
}
这时候的f对象isDirectory()和isFile()都为false

Original issue reported on code.google.com by jinghu...@gmail.com on 18 Apr 2010 at 1:15

GoogleCodeExporter commented 9 years ago
文件可以读取的.load方法是私有的,调用这个方法的方法,使用F
iles.findFile进行查找.
目录的话,的确无法读取jar里面的目录,因为根本就没有目录.
暂时没想到什么方法来读取.

我在 r1089 做了一些修改.

Original comment by wendal1985@gmail.com on 18 Apr 2010 at 2:48

GoogleCodeExporter commented 9 years ago
我的使用场景是在MVC中,@IocBy(type = IJsonIocProvider.class, args = { 
"core.js" })
在eclipse开发环境没有问题;部署的时候,如果不打成jar也没�
��问题;代码打成jar但是把core.js放在外
面也没有问题。 Files.findFile 
是可以找到jar中的文件的,但是得到的File对象isFile()=false,��
�
以上面的load方法无法载入配置的文件

另外,JarEntry貌似可以标识JarFile中的一个name是否是 
目录还是文件

Original comment by jinghu...@gmail.com on 19 Apr 2010 at 1:34

GoogleCodeExporter commented 9 years ago
r1089 应该已经覆盖这个问题.

Original comment by wendal1985@gmail.com on 19 Apr 2010 at 9:31

GoogleCodeExporter commented 9 years ago

Original comment by wendal1985@gmail.com on 27 Apr 2010 at 4:38

GoogleCodeExporter commented 9 years ago

Original comment by wendal1985@gmail.com on 13 May 2010 at 10:24

GoogleCodeExporter commented 9 years ago

Original comment by zozoh...@gmail.com on 19 May 2010 at 3:21

GoogleCodeExporter commented 9 years ago
NutResource已经覆盖这个issue

Original comment by wendal1985@gmail.com on 21 Jul 2010 at 2:32