【发布时间】:2014-05-13 04:18:09
【问题描述】:
下面的代码在 Eclipse 中运行良好(两种图像处理可能性)。但是,当导出为 Runnable JAR 文件并双击 .JAR 时,没有任何反应。如果我注释掉代码的图像部分,.JAR 作为导出运行良好并且框架构建。所以看起来图像的获取导致 .JAR 失败。
我的草莓.jpg 文件位于“C:\Users\sean\workspace\myApps\bin\testing”中,您能否告知问题是否与我的代码有关?
(此处首先修改代码:Java Swing: unable to load image using getResource)
package testing;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
public class IconTest {
public static void main(String[] arguments) throws IOException {
JFrame frame1 = new JFrame();
frame1.setTitle("Frame1");
frame1.setSize(500, 500);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout flo = new FlowLayout();
frame1.setLayout(flo);
//POSSIBILITY 1 TO HANDLE IMAGE
InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");
Image image = ImageIO.read(resourceAsStream);
JLabel label1 = new JLabel(new ImageIcon(image));
//POSSIBILITY 2 TO HANDLE IMAGE
/* java.net.URL url= IconTest.class.getResource("strawberry.jpg");
BufferedImage watermarkImage = ImageIO.read(url);
JLabel label1 = new JLabel(new ImageIcon(watermarkImage));*/
frame1.add(label1);
frame1.setVisible(true);
}
}
【问题讨论】:
-
如果您在不同的系统中执行,请提取jar并检查是否包含图像。
-
一种可能性是您可以在将
JLabel包含为ImageIcon之前检查if ( image != null ),如果它为空,您可以使用一些替代文本创建JLabel...跨度> -
应用程序需要的资源不应该存储在资源目录中吗?这可能需要在 Eclipse 中配置,而不是它的用户,但这种情况一直发生
-
是的——我设法通过创建两个包来让它工作——一个用于资源,一个用于我的代码类。然后我在 Eclipse 中的资源包上单击右键 > 导入以获取图像。我的代码中唯一需要更改的是 ....getResourceAsStream("/resources/strawberry.jpg");
标签: java eclipse swing jar embedded-resource