如何解决无法为 ico 文件创建输入流
我尝试创建一个指向 InputStream
文件的 .ico
,该文件位于 src
目录中的目录中。我还在 InputStream
中为不同的 jar 文件创建了一个 src
。
InputStream inIco = Installer.class.getResourceAsStream("/res/" + iconName + ".ico");
InputStream inApp = Installer.class.getResourceAsStream("/res/" + applicationName + ".jar");
这就是我尝试加载它的方式。 jar 文件的输入流有效,但另一个为空。
编辑:抱歉让大家感到困惑。我没有构建 jar,我只是从我的编辑器中运行它,这显然给了我不同的结果,现在它正在工作。感谢您的回答。
解决方法
getResourceAsStream (gRAS) 从同一个地方加载 java 加载类文件。太好了 - 这意味着您可以将您的应用程序作为 jar 发送并将这些资源放入其中。如果它不适合您,则您的构建配置错误。具体来说,java 首先要确定 Installer.class
文件的类路径根目录并在那里查找。如果您不确定那是什么,请运行以下代码:
System.out.println(Installer.class.getResource("Installer.class"));
将打印类似 jar:file:/Users/carlos/projects/FooBar/dist/foobar.jar!com/foo/Installer.class
这告诉您 gRAS 将查看该 foobar.jar 文件。
从那里,资源相对于根目录加载(因为有斜杠):在那个 jar 中,它将查找 /res/app.ico
。如果没有它,它会相对于 Installer 类的相同目录/包加载(在上面的示例中,gRAS("hello.txt")
与 gRAS("/com/foo/hello.txt")
相同。
要完成这项工作,您的构建系统负责。对于 maven 和 gradle,将 src/main/java/com/foo/Installer.java
与 src/main/resources/res/icon.ico
一起使用,一切都应该很好。如果这不起作用,请解释您是如何设置环境的,因为如果这不起作用,则会出现配置错误。如果您正在使用其他构建工具(例如 ant、sbt 或依赖您的 IDE 来处理它),请为该工具命名,也许我们可以帮助解决配置错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。