基本上,我试图加载一些图像数据到java作为ImageIcon对象。我最初尝试简单地做ImageIcon图像=新ImageIcon(文件名),但这使得图像在导出为JAR文件时不会加载。我做这件事的新方法是:
private static ImageIcon getImage(String filename) {
try {
URL url = PacMan.class.getResource(filename);
Image image = ImageIO.read(url);
return new ImageIcon(image);
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
这个错误是因为吃豆人。班getResource(文件名)返回null。我的目录是这样的:我的PacMan类位于src/Model/PacMan中,我的映像具有以下文件路径:
src/Model/PacMan_Images/PacMan_EAST,
src/Model/PacMan_Images/PacMan_SOUTH,
src/Model/PacMan_Images/PacMan_WEST,
src/Model/PacMan_Images/PacMan_NORTH.
此外,我还尝试恢复使用新的ImageIcon(文件路径),图像加载良好,因此我知道该图像存在于我的目录中。有人知道可能是什么问题吗?
编辑:我的错误是我得到了一个IllegalArgumentException抛出,因为我传递null作为ImageIO的参数。读取(url),因为url为空。
错误是我传递的文件名是Model/PacMan_Images/PacMan_EAST,而不是/Model/PacMan_Images/PacMan_EAST。事实证明,额外的/真正的改变。感谢@MadProgrammer的帮助,@paulsm4提供了额外的资源,以及所有发表评论的人。
如果路径根“/src”真的被导入到您的应用程序中,我会感到惊讶。罐子请试试这个:
>
看看. jar里面。例如,使用7Zip查看文件的实际路径。
尝试将文件名更改为“Model/PacMan_Images/PacMan_EAST”。
有关Java getResource()的更多详细信息,请参见此处:
http://www.novixys.com/blog/read-file-resources-folder-java/
https://docs.oracle.com/javase/8/docs/technotes/guides/lang/resources.html
JavaSwing:在Jar中显示图像
增编:
>
我会下载7-Zip并检查您的. jar文件,只是为了熟悉格式。它只是一个. zip文件...但是了解它里面的内容并能够修改它(如果只是为了故障排除)通常是有用的。
下面是关于“Class.getResource”(可以采用“相对”资源名称)和“绝对资源”(必须有斜杠)的精彩讨论:
这两门课的区别是什么。getResource()和类加载器。getResource()?
最后,这里有一个重构代码以避免编译器警告的建议:
private static ImageIcon getImage(String filename) {
ImageIcon imageIcon = null;
try {
URL url = PacMan.class.getResource(filename);
Image image = ImageIO.read(url);
imageIcon = new ImageIcon(image);
}
catch (IOException e) {
e.printStackTrace();
}
return imageIcon;
}
还有许多其他选项,包括仅禁用该特定警告(例如:[警告]
我正在处理一个非常简单的point类,但我得到了一个错误,我无法确定字符串/双值问题发生的位置或如何修复它。 编辑 我忘记添加我正在接收的错误:
问题内容: 我正在Ubuntu 16.04上使用最新版本的Elasticsearch,但在将数据放到上面时遇到了一个小问题。 这是我的json文档(相关部分) 这是当我尝试“ PUT http:// localhost:9200 / aws ” 时从ES返回的响应 在我看来,ES认为“ clockSpeed”是某种设置…?我希望使用动态映射来加快此过程,而不是先映射所有文档,然后将其导入ES。 有
在Java jar上运行JUnit5测试并加载依赖项时,会出现警告 当我去看dumpstream时,它充满了评论,比如: 解决了依赖项加载问题,但未解决损坏的流。
问题内容: 这是我的用法- 另外,我在http GET周围放置了一个finally块- 这是我的堆栈跟踪- 我正在使用Quartz计划监视Http端点的工作。这是我的连接池配置 Maven依赖..工件版本 编辑 -好吧,通过不关闭finally块中的CloseableHttpClient,问题解决了。有人能说出为什么这样吗? 如果关闭客户端,为什么连接池会关闭? 是上面的closeablehttp
问题内容: 如果参数无效,如何使用JSR-303验证方法参数并引发异常? 例如像这样:? 现在,我检查方法主体中的每个方法参数,例如 而且我觉得这很丑。 PS作为参考实现,我使用Hibernate-validator 4.1.0.Final 问题答案: 如果可以升级到Hibernate Validator 4.2.0或更高版本,则可以使用其方法验证功能,该功能为方法参数和返回值的验证提供支持。 可
你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。 如何引发异常 例13.2 如何引发异常 #!/usr/bin/python # Filename: raising.py classShortInputException(Exception): '''A u