一个基本的Java工程,用Eclipse建立,目录为:
src
src/com/../源文件
src/resource/lineup.txt
src/META-INF/manifest.mfbin
bin/com/../class文件
bin/resource/lineup.txt
bin/META-INF/manifest.mfsrc目录下是源文件和资源文件,资源文件在源文件里有调用.我在java程序里这样写对资源文件的调用:
[code]public static final String RESOURCE_DIR = ClassLoader.getSystemResource("").getFile();
public static final String SAMPLE_LINE_UP = RESOURCE_DIR  + "resource/lineup.txt" ;[/code]
其中,RESOURCE_DIR是${ProjectHome}/bin/路径,这样写,我在eclipse下运行没有问题;
而后,我将bin目录打包成JAR,打包过程:进入${ProjectHome}/bin/,然后:
[code]jar cvfm ..\MilitaryChess.jar  .\META-INF\MANIFEST.MF  .\* ..\resource[/code]
打包后,jar文件目录结构为:
JAR-com/../class
   -resource/lineup.txt
   -META-INF/MANIFEST.MF运行Jar却总是报: ClassLoader.getSystemResource("") 这里是NullPointer异常,请问:
问题在哪,如何解决呢?谢谢我做的是一个Swing界面,这里有下载
http://metaphy.javaeye.com/blog/180498

解决方案 »

  1.   

    重发一下,我那代码都没有显示出来:一个基本的Java工程,用Eclipse建立,目录为:
    src
    src/com/../源文件
    src/resource/a.txt
    src/META-INF/manifest.mfbin
    bin/com/../class文件
    bin/resource/a.txt
    bin/META-INF/manifest.mfsrc目录下是源文件和资源文件,资源文件在源文件里有调用.我在java程序里这样写对资源文件的调用:
    public static final String RESOURCE_DIR = ClassLoader.getSystemResource("").getFile();
    public static final String SAMPLE_LINE_UP = RESOURCE_DIR  + "resource/lineup.txt" ; 其中,RESOURCE_DIR是${ProjectHome}/bin/路径,这样写,我在eclipse下直接运行没有问题;
    而后,我将bin目录打包成JAR,打包过程:进入${ProjectHome}/bin/,然后:
    jar cvfm ..\MilitaryChess.jar  .\META-INF\MANIFEST.MF  .\*打包后,jar文件目录结构为:
    JAR-com/../class
       -resource/a.txt
       -META-INF/MANIFEST.MF运行Jar却总是报: ClassLoader.getSystemResource("") 这里空指针问题,请问:
    问题在哪,如何解决呢?谢谢 
      

  2.   

    jar文件目录结构的正确编程:
    /META-INF(版本)
    /MANIFEST.MF(清单)
    /JAR-com(通用域名)
    ../class(入口类)
     -resource/a.txt(说明书)
    虽然Java是在C++的基础上开发出来的,
    但是JAVA不支持指针,
    C++和JAVA之间的最大不同是JAVA不再支持指针。