Java 如何设置图像图标的正确路径?
我真的非常感谢您的帮助: 我当前的场景:每次尝试加载时,我都会遇到一个错误: jPanel、jFrame、jInternalFrame或任何其他java组件(java.swing.组件)。如果我在面板中加载像这样的ImageIcon集(如下所述),我会得到一个NullPointerExection,因为它找不到字符串中提供的图像路径下的图像 注意:我的IDE是Oracle的JDeveloper11GJava 如何设置图像图标的正确路径?,java,path,imageicon,Java,Path,Imageicon,我真的非常感谢您的帮助: 我当前的场景:每次尝试加载时,我都会遇到一个错误: jPanel、jFrame、jInternalFrame或任何其他java组件(java.swing.组件)。如果我在面板中加载像这样的ImageIcon集(如下所述),我会得到一个NullPointerExection,因为它找不到字符串中提供的图像路径下的图像 注意:我的IDE是Oracle的JDeveloper11G 私有ImageIcon image1=新的ImageIcon(getClass().getRe
私有ImageIcon image1=新的ImageIcon(getClass().getResource(path) 格式1: “.\\src\\Image\\add.png”,“\\src\\Image\\add.png”,“\\src\\Image\\add.png” (我意识到:[”。\\src\\Image\\add.png“]对我所在学院的几乎所有人都有效,如果我运行的项目不是我自己开发的,它就可以正常工作,否则它就会失败。) 格式2: “.\\Image\\add.png”,“\\Image\\add.png”,“\\Image\\add.png” 格式3: “.\\add.png”,“\\add.png”,“\\add.png” 格式4: “./src/Image/add.png”,“/src/Image/add.png”,“/src/Image/add.png” 格式5: “./Image/add.png”,“/Image/add.png”,“/Image/add.png” 格式6: “./add.png”,“/add.png”,“/add.png”
提前感谢您的帮助图像图标不是您的问题。关键是
getClass().getResource()
,它从java读取类文件的同一源加载文件
换句话说:如果您的类路径是-cp.
或任何其他目录,getResource()
也将从那里相对于给定目录加载文件(“.”是当前目录)
如果您的类路径是一个.jar
文件,则该路径是在这个jar中查找,而不是在其他地方
现在转到给定的路径,您的类路径是/a/bin,您的类是c.d.E
:
是根。不是文件系统的根,而是类路径的根。在本例中,这是/
/a/bin/
表示类的位置。在本例中,这是/a/bin/c/d/
表示后退一步,即。
。这是因为Java向文件系统请求路径/a/bin/c/
/a/bin/c/d/./
c.d.E
:
是jar的根/
表示类的位置。在本例中,这是罐内的c/d/
没有记录。
\\
或/
作为分隔符,在Windows上并不重要。在所有其他情况下,您必须使用/
现在,我希望我没有包含错误…我刚刚找到了图像图标的正确路径,谢谢大家的评论。我真的很感激 简短回答: 根据我之前描述的场景,Sting中正确的路径必须是“/Image/add.png”或“/package\u folder/file.png” 图像文件必须放置在App\u Folder\Project\classes\package\u name中,但也应显示在App\u Folder\Project\src\package\u name“中(如果添加任何新图像,可以替换文件夹) 截图 为了更好的理解 在本场景中,代码总结如下: ImageIcon image1=新的ImageIcon(getClass().getResource(“/Image/add.png”)强>
根据我的理解,这是我谦卑的解释: JDeveloper在包和类的位置查找映像文件。 这是App\u Folder\Project\classes\package name。如果我们仔细观察结构是否在类中查找资源,这可能足以“获取” 但如果像我这样的人需要更多的提示,那就好了 我发现我的错误是: JDeveloper似乎有两个存储库而不是一个,或者它是包和类的一种备份。 因为对“source”的删节可以是src,我想,如果我把包中的文件放在src(source)中,并且Javadocs中基于路径的“/Image\u package/ImageFile.(type)”是正确的。为什么我要面对这个NullPointerException 今天我和我的老师在大学里检查了同样的细节,结果成功了,但是回到家里,我遇到了同样的错误,我开始查看其他文件来检查关于“班级”和“资源”的细节,所以我发现还有一个文件夹包含同样的包,但这个文件夹没有“更新”(如果我们这样描述的话)我在src中放置了新的图像。然后我粘贴了新的图像,重新打开开发人员,然后运行脚本。。。最后,Jframe出现了新图标 我希望这些细节能对某人有所帮助
你没有猜,你读过Class.getResource()的javadoc吗?嗨,对不起,我是一个编程新手,你能不能给我提供在线查看详细信息或任何文档的步骤,我只是在这个网站上找到了更多关于“Class.getResource()的javadoc”的问题。@JB谢谢。。。下面是您发布的链接(),如果我理解正确,我的案例中的路径应该是oracle文档中的路径:“/src/Image/add.png”如果我错了,请告诉我其他人,我会在Jdeveloper中检查它,看看这是否有什么不同。我已经确认图像位于正确的目录中,但对我来说很不幸“…getResource(“/src/Image/add.p