MANIFEST.MF文件中的Class-Path应该怎么设置,才能让一个使用了其他jar的runnable jar成功运行呢?
据我所知:
使用Eclipse做项目的时候,如果项目导入了其他jar(假设叫做 other.jar),最终Export as Runnable Jar File的时候会把other.jar一起合并到该项目的生成jar中(假设叫做project.jar)。也就是说,最终生成的只有一个project.jar,这个project.jar内部的目录结构除了包含该项目自己的packages和classes,也包含了other.jar里的目录。MANIFEST.MF 的Class-Path是一个点:“.”。而是用NetBeans IDE,则会在最终的dist目录下生成project.jar 和 一个lib/other.jar,project.jar就不包含other.jar的目录了。这时生成的project.jar中的MANIFEST.MF文件的Class-Path是lib/other.jar (如果导入了多个外部jar,则它们用空格隔开,如"Class-Path: lib/other1.jar lib/other2.jar")现在的问题就是,用NetBeans生成的项目中有一段这样的代码:
URL url=images.Imgs.class.getResource("pic.png");
        if(url==null){
            System.out.println("No such url!");
            return null;
        }
        ImageIcon icon=new ImageIcon(url);
       开发过程中在NetBeans里运行的很好,但是在运行最终的Runnable Jar时,getResource()方法的值总是为null。
请问这是Manifest.MF的问题么?应该怎么设置Class-path呢?

解决方案 »

  1.   

    你的pic.png是不是在project.jar外面?
    如果在外面,在"class-path:"之后加个“.”
      

  2.   

    我不知道你将图片放在了什么地方?
    我在eclipse中,将图片放在和java文件相同的目录下,然后在java文件中像下面这样调用:
    Image image = new ImageIcon("/img1.jpg").getImage();希望对你有帮助。