Eclipse代码运行正常,jar不行

时间:2012-03-21 20:01:33

标签: java eclipse jar inputstream

我是新手,对java有点新意。 我遇到了一个问题。 我有一个非常简单的程序,试图创建png并将其保存在用户选择的文件夹中。 byteimage是一个私有字节[]:

byteimage = bcd.createPNG(300, 140, ColorSpace.TYPE_RGB, Color.BLACK, Color.BLACK);

在浏览按钮

的动作侦听器内调用setPath()
private void setPath() {

    JFileChooser pathchooser = new JFileChooser();
    pathchooser.setMultiSelectionEnabled(false);
    pathchooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    pathchooser.setApproveButtonMnemonic(KeyEvent.VK_ENTER);
    pathchooser.showDialog(this, "OK");

    File f = pathchooser.getSelectedFile();
    if (f != null) {
        filepath = f.getAbsolutePath();
        pathfield.setText(filepath);
      }
}

字节到png方法看起来像这样:

public void byteToPNG(String filename) {
        try {
        InputStream in = new ByteArrayInputStream(byteimage);
        BufferedImage bufferedimg = ImageIO.read(in);
        ImageIO.write(bufferedimg, "png", new File(filename));
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}

此方法的调用如下:

byteToPNG(pathfield.getText() + System.getProperty("file.separator") + textfield.getText() + ".png");

textfield.getText()设置png的实际名称。 在构造函数内部,设置了默认文件路径:

filepath = System.getProperty("user.dir");
pathfield.setText(filepath);

代码在Eclipse中运行良好,它在所需位置生成一个png图像。 不幸的是,在导出为jar之后,它会启动,但是当按下用于生成png的按钮时,没有任何反应。我在想InputStream或BufferedImage有问题,但我有点不解。

1 个答案:

答案 0 :(得分:0)

如果传递给byteToPNG的String fileName不是绝对的(即以“C:/ foo / bar / etc”形式写入),这可能是破坏jar的原因。您还可以尝试使用以下命令在终端中运行jar文件: java -jar myJarFile.jar。 这将导致控制台窗口在运行的jar应用程序旁边保持打开状态,其中将打印所有应用程序输出(包括任何异常)。