Вывод JFreeChart с JFileChooser

У меня есть график JFreeChart, который я хотел бы сохранить в виде файла PNG из приложения Java Swing.

XYPlot plot = (XYPlot)chart.getPlot();
plot.setBackgroundPaint(new Color(255,228,196));
ChartPanel panel = new ChartPanel(chart);
setContentPane(panel);
panel.setSize(600, 300);

JFileChooser exportChooser = new JFileChooser();
exportChooser.setSelectedFile(new File("test plot"));
FileFilter filter = new FileNameExtensionFilter("PNG File","png");
exportChooser.setFileFilter(filter);
int returnVal = exportChooser.showDialog(null, "Export");
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = exportChooser.getSelectedFile();
try {
    OutputStream out = new FileOutputStream(file);
    ChartUtilities.writeChartAsPNG(out, chart, panel.getWidth(), panel.getHeight());
}catch (IOException e) {
  e.printStackTrace();
}catch (Throwable t){
  t.printStackTrace();
}
}

Я получил эту ошибку:

java.lang.UnsatisfiedLinkError:
javax.imageio.ImageIO.write(Ljava/awt/image/RenderedImage;Ljava/lang/String;Ljava/io/OutputStream;)

Я не уверен, что это значит и как это решить. Я также не уверен, что мой код имеет смысл, особенно OutputStream out = new FileOutputStream(file);. Буду очень признателен за любую информацию!


person A BeauTifful Life    schedule 04.11.2018    source источник
comment
Почему не ChartUtilities.saveChartAsPNG()?   -  person trashgod    schedule 04.11.2018
comment
@trashgod ошибка все еще сохраняется ....   -  person A BeauTifful Life    schedule 04.11.2018
comment
Работает на меня; отсутствующая библиотека звучит как проблема установки JFreeChart, упомянутая здесь, или проблема установки Java.   -  person trashgod    schedule 05.11.2018
comment
Какую версию Java вы используете? Каков результат java --version в среде выполнения, когда вы получаете сообщение об ошибке? Похоже на проблему с JRE.   -  person Harald K    schedule 05.11.2018
comment
@haraldK java 10.0.2 Java(TM) SE Runtime Environment 18.3 (сборка 10.0.2+13) Java HotSpot(TM) 64-битный сервер VM 18.3 (сборка 10.0.2+13, смешанный режим)   -  person A BeauTifful Life    schedule 05.11.2018
comment
Странный. Вы уверены, что модуль java.desktop является частью этой JRE? Теперь можно включать/исключать модули и создавать адаптированную минимальную JRE точно для ваших нужд с помощью инструмента jlink.   -  person Harald K    schedule 05.11.2018
comment
@haraldK Я смог немного понять ваш комментарий только после прочтения статьи о функции модульности Java 9 (извините за поздний ответ). Но как убедиться, что это часть JRE? Я также решил попробовать ImageIO, но столкнулся с ошибкой «метод не найден»; Я сделал сообщение stackoverflow.com /вопросы/53230998/. Не знаю, связано ли то, о чем вы говорили?   -  person A BeauTifful Life    schedule 09.11.2018