Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 从本地文件夹加载应用程序中的图片_Java - Fatal编程技术网

Java 从本地文件夹加载应用程序中的图片

Java 从本地文件夹加载应用程序中的图片,java,Java,我在我的应用程序文件夹中有:图片文件夹,里面有图片,还有我运行的.jar文件。我需要从“图像”文件夹加载图片。我有从URL加载图片的方法,我尝试了 String path=System.getProperty("user.dir")+File.separatorChar+"images"+File.separatorChar+"first.jpg"; try{ URL url=new URL(path); } catch(Exception exc){ } 但是我得到了错误java.net.m

我在我的应用程序文件夹中有:图片文件夹,里面有图片,还有我运行的.jar文件。我需要从“图像”文件夹加载图片。我有从URL加载图片的方法,我尝试了

String path=System.getProperty("user.dir")+File.separatorChar+"images"+File.separatorChar+"first.jpg";
try{
URL url=new URL(path);
}
catch(Exception exc){
}
但是我得到了错误java.net.malformedurexception:no protocol:/home/images/first.jpg。
添加什么样的前缀,或者是否有更好的方法加载URL图像?

对于本地文件,协议是“file://”,但是在windows上,您需要添加额外的“/”

您可以在URL的开头这样指定:

String path="file:///" + System.getProperty("user.dir")+File.separatorChar+"images"+File.separatorChar+"first.jpg";

对于本地文件,协议为“file://”,但在windows上,您需要添加额外的“/”

您可以在URL的开头这样指定:

String path="file:///" + System.getProperty("user.dir")+File.separatorChar+"images"+File.separatorChar+"first.jpg";

为什么必须从url加载图片?为什么不从路径加载它?你想要什么

不管怎样,你为什么不试试这样的方法呢:

String path= ="file://"+System.getProperty("user.dir")+File.separatorChar+"images"+File.separatorChar+"first.jpg";

为什么必须从url加载图片?为什么不从路径加载它?你想要什么

不管怎样,你为什么不试试这样的方法呢:

String path= ="file://"+System.getProperty("user.dir")+File.separatorChar+"images"+File.separatorChar+"first.jpg";

理想情况下,这些图像应该在jar内,并通过类加载器使用
getResource()
getResourceAsStream()
加载。理想情况下,这些图像应该在jar内,并通过类加载器使用
getResource()
getResourceAsStream()
加载。它应该是
字符串路径=文件://“+系统。获取…等~

但如果您像这样加载它可能会更好:

URL url = this.getClass().getResouce("first.png");

然后将图像添加到类路径。

它应该是
String path=file://“+System.get…等~

但如果您像这样加载它可能会更好:

URL url = this.getClass().getResouce("first.png");

然后将图像添加到类路径。

在windows中,您必须添加一个额外的“/”以便类似于“文件://”。干杯。在windows中,您必须添加一个额外的“/”以便类似于“文件:///“.干杯.不,协议只有两条斜线。但是,Unix路径通常以另一个路径开始。在Windows中,您需要在驱动器前面加一个斜杠。@OrangeDog谢谢。我已经用你的反馈更新了anwser。不,协议只有两个斜杠。但是,Unix路径通常以另一个路径开始。在Windows中,您需要在驱动器前面加一个斜杠。@OrangeDog谢谢。我已经用你的反馈更新了anwser。怎么做?我喜欢这个解决方案,但我不知道怎么做。我相信这是一个更好的解决方案。您必须将img文件插入jar中。(并打包)然后调用该方法。在eclipse中,如果您将它放在文件旁边,它将打包它。检查getResourceAsStream()文档不要偷懒:-怎么做?我喜欢这个解决方案,但我不知道怎么做。我相信这是一个更好的解决方案。您必须将img文件插入jar中。(并打包)然后调用该方法。在eclipse中,如果您将它放在文件旁边,它将打包它。检查getResourceAsStream()文档不要偷懒:-PDon不要捕获泛型异常…..当您捕获异常(任何类型)时,不要忽略它们。记录它们或转储堆栈跟踪。忽略异常就像试图用一只手臂绑在背后,蒙着眼睛进行调试。不要捕获一般异常……当您捕获到异常(任何类型)时,不要只忽略它们。记录它们或转储堆栈跟踪。忽略异常就像试图用一只手臂绑在背后,蒙着眼睛进行调试。