图像无法在.jar文件中使用
创建应用程序的JAR时,应用程序中的图像不再出现。 我们加载图片的代码示例如下:
ImageIcon placeHolder = new ImageIcon("src\\Cards\\hidden.png");
我们不知道为什么会这样。 如果我们不将它压缩到JAR,应用程序将按预期运行; 作为一个JAR,图像就会消失。 我们还尝试使用URL而不是ImageIcons,但这只会导致程序根本不运行。
有任何想法吗?
编辑:我们正在将图像文件放入正确路径的JAR文件中,这不是问题所在。
检查您正在调用的构造函数的API。 传入的字符串是文件路径 – 当资源打包在JAR中时,文件系统上没有包含图像的文件,因此您不能再使用此构造函数。
相反,您需要使用类加载器从流中加载资源,并将它们拉入字节数组:
byte[] buffer = new byte[IMAGE_MAX_SIZE]; InputStream imageStream = getClassLoader().getResourceAsStream("src\Cards\hidden.png"); imageStream.read(buffer, 0, IMAGE_MAX_SIZE); ImageIcon placeHolder = new ImageIcon(buffer);
当然,需要更多例外和边缘案件处理,但这是它的要点。
您应该从类路径加载资源:
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("Cards/hidden.png")
这当然假设在创建JAR时,实际上是将图像文件放入其中。
还有一种将资源作为URL获取的方法。
问题 :文件夹src
是否存在于jar中?
提示 :您可以使用任何支持ZIP的解包程序打开.jar以查看其内容。
答 :您引用资源的方式不正确,您应该执行类似getClass().getClassLoader().getResource("Cards/hidden.png")
。
- 在Eclipse中生成Jar包括外部库
- 如果我有一个构造函数需要一个文件的路径,如果它被打包到一个jar子里怎么能“假”?
- 如何为图书馆分发Javadoc?
- maven依赖关系和手动添加WEB-INF / lib中的jar之间的区别
- 在NetBeans中生成可执行jar
- 如何从Eclipse导出Java jar并依赖于其他jar?
- 读取Jar中的文件(ZipInputStream等)
- 线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:资源路径中找不到jnidispatch(/ com / sun /jna/win32-x86/jnidispatch.dll)
- 试图从jar文件加载图标