2012-03-21 7 views
0

Я новичок в этом и явственно новичок в java. Я столкнулся с проблемой. У меня очень простая программа, которая пытается создать png и сохранить их в выбранной пользователем папке. byteimage аа частный байт []:Код Eclipse работает отлично, jar не

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); 
     } 
} 

байт для метода детские выглядит следующим образом:

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, но я немного озадачен.

ответ

0

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

+0

Спасибо за ваш ответ. Строковое имя файла является абсолютным, я попробую запустить банку в терминале. – johnpeterman

Смежные вопросы