Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Jar_Embedded Resource - Fatal编程技术网

Java 在jar中找不到文件

Java 在jar中找不到文件,java,file,jar,embedded-resource,Java,File,Jar,Embedded Resource,我在JavaSwing应用程序中工作。我使用的图标图像放在上传文件夹中。当我运行我的项目时,它运行良好 我将我的项目导出为jar。当我运行jar文件时,它会显示未找到文件错误 这是我的密码 BufferedImage img = ImageIO.read(new File(Config.IMAGE_RESOURCE_FOLDER + "/" + fileName)); 我假设您的文件在jar中。因此,将名为Locator的类放在同一目录中。并使用以下代码: URL=locator.getUR

我在JavaSwing应用程序中工作。我使用的图标图像放在上传文件夹中。当我运行我的项目时,它运行良好

我将我的项目导出为jar。当我运行jar文件时,它会显示未找到文件错误

这是我的密码

BufferedImage img = ImageIO.read(new File(Config.IMAGE_RESOURCE_FOLDER + "/" + fileName));

我假设您的文件在jar中。因此,将名为Locator的类放在同一目录中。并使用以下代码:

URL=locator.getURL(name+“.gif”); Image img=Toolkit.getDefaultToolkit().getImage(url)

类定位器是:

包schachfiguren; 导入java.net。*; 公共类定位器 { 公共URL getURL(字符串pfad) { URL=this.getClass().getResource(pfad); 返回url; } }


pfad是文件的名称。例如,sbs.gif。

应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们,就好像它们是嵌入式资源一样。必须通过URL而不是文件访问。有关如何形成URL.BTW的信息,请参阅-Config.IMAGE\u RESOURCE\u文件夹的值是多少(它指向什么路径)?Config.IMAGE\u RESOURCE\u FOLDER=“images”我正在静态方法中使用此功能。所以当我使用这个.getClass().getResource(“/path/to/the.resource”);它不起作用了。相反,我也尝试使用sttic方法类。但不工作。您的代码当前正在查找目录
/images
中的文件,其中
是当前目录,即启动
java
程序的目录。因此,如果您没有从正确的目录执行Java,或者如果您的图像位于名为
uploads
的文件夹中,则可能无法工作。只有当文件与Locator类不在同一目录中时,我才会收到NullPointerException。我的图像文件夹位于我的src文件夹之外。我将图像移动到src文件夹中。它正在工作。但当它在外部时,它对正常的项目运行有效,但对jar运行无效。但是得到了同样的结果。然后我将其移动到
src
中,然后尝试您的代码。这对双方都有效。我认为
images
inside
src
不是好的做法。不管怎样,它现在起作用了。谢谢。