java jar中的路径问题

时间:2009-05-04 00:20:17

标签: java path jar classpath

我有一个名为Etc的文件夹,它有一个我想在同一文件夹Example.java中的另一个文件中使用的图像。所以我有Etc \ image.png和Etc \ Example.java。我尝试使用“Etc / image.png”作为图像路径,但这不起作用。我应该怎么做呢?

另外,假设文件在不同的包中,我该怎么做?

我的主要.java类位于名为Main的包中,用于记录。

修改

我用过这个:

ClassLoader.getSystemClassLoader()的getResource( “ETC \ image.png”);

3 个答案:

答案 0 :(得分:2)

您可以使用Class.getResource(),它使用类加载器来获取资源的URL。例如:

import java.net.URL;
import javax.swing.ImageIcon;

public class Example {

    public ImageIcon getImage() {
        URL url = Example.class.getResource( "image.png" );
        if( url != null ) {
            return new ImageIcon( url );
        }
        return null; // TODO: Better error handling
    }

}

重要的部分是Example.class.getResource( "image.png" ) - 图像路径是相对于命名类指定的;在这种情况下,它与类文件位于同一目录中。您也可以在任何其他类中使用此行,保留对Example.class的引用。

答案 1 :(得分:0)

首先要做的事情。

Etc是一个包吗?换句话说,在示例文件的顶部是否有

包等;

???

通常包名是小写的,这就是我问的原因。

其次,尽管您可以使用相对路径来访问资源,但我建议您始终使用绝对路径。

所以

网址url = Example.class.getResource(“/ etc / image.png”);

如果Etc是包,否则

网址url = Example.class.getResource(“/ image.png”);

如果不是。

答案 2 :(得分:0)

要使其正常工作,您必须拥有Etc在类路径中的目录。如果它在罐子里面,我不记得了。作为类路径工作,如果没有,将Etc添加到类路径,并引用没有类路径的图像,或将Etc放在子目录中。并将该子目录放在类路径中。