Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 指定可执行jar内子目录的文件路径_Java_Image_Swing_Jar_Embedded Resource - Fatal编程技术网

Java 指定可执行jar内子目录的文件路径

Java 指定可执行jar内子目录的文件路径,java,image,swing,jar,embedded-resource,Java,Image,Swing,Jar,Embedded Resource,我正在做一个java项目,并将其制作成一个可执行的jar。在jar中,所有正确的文件都包含在内,但在运行jar时,图像不会显示 当我从命令行运行程序时,程序能够正确显示所有内容 我相信问题可能是因为我如何在代码中设置文件路径? 以下是我的设置示例: private static String imgPath; ... imgPath = String.format("img%d.gif", value); ... public static ImageIcon getImageIcon(

我正在做一个java项目,并将其制作成一个可执行的jar。在jar中,所有正确的文件都包含在内,但在运行jar时,图像不会显示

当我从命令行运行程序时,程序能够正确显示所有内容

我相信问题可能是因为我如何在代码中设置文件路径? 以下是我的设置示例:

private static String imgPath;
...
    imgPath = String.format("img%d.gif", value);
...
public static ImageIcon getImageIcon() {
    ImageIcon ii = new ImageIcon("content/dice/" + imgPath);
    return ii;
}
//getImageIcon() is later called by another class

除非我尝试从一个可执行的jar运行程序,否则这种设置是有效的。因此,我的问题是如何让它从jar中工作?

第一个错误是假设jar中有一个文件系统(目录等)。有些指向资源的路径可能看起来像目录和文件,但没有目录或文件

应用程序资源在部署时将成为嵌入式资源,因此现在就开始访问它们是明智的。必须通过URL而不是文件访问。有关如何形成URL的信息,请参见