Код Eclipse работает нормально, нет - PullRequest
0 голосов
/ 22 марта 2012

Я новичок здесь и немного новичок в 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 голосов
/ 22 марта 2012

Если String fileName, переданное byteToPNG, не является абсолютным (то есть записано в форме "C: / foo / bar / etc"), это может быть причиной разбитой банки. Вы также можете попробовать запустить файл jar в терминале с помощью команды: java -jar myJarFile.jar. Это приведет к тому, что окно консоли останется открытым вместе с запущенным jar-приложением, в котором будут напечатаны все ваши приложения (включая любые исключения).

...