JFileChooser не работает при преобразовании в .jar

Итак, я новичок в программировании и только в этом году начал изучать информатику в школе. В одной из своих программ я пытаюсь использовать JFileChooser и JButton, поэтому я просто скопировал некоторый код, который нашел в Интернете, и изменил его, так как я еще не знаю, как использовать try/catch:

    JButton button = new JButton("Select File");
    button.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            String path;
            try {
                path = new File(".").getCanonicalPath();
                path = path.substring(0, path.length() - 7);
                JFileChooser jf = new JFileChooser();
                jf.setFileSelectionMode(JFileChooser.FILES_ONLY);
                jf.setMultiSelectionEnabled(false);
                int returnValue = jf.showOpenDialog(null);
                if (returnValue == JFileChooser.APPROVE_OPTION) 
                {
                    int n = ptoj.convert(jf.getSelectedFile().getAbsolutePath(), path);
                    for (int i = 0; i < n; i++)
                    {
                        if (i < 10)
                        {   
                            PictureTester.split(path + "yourFile-0" + i + ".jpg", i);
                        }
                        else 
                        {
                            PictureTester.split(path + "yourFile-" + i + ".jpg", i);
                        }
                    }
               }
            } catch (Exception e1) {
                e1.printStackTrace();
            }

        }

    });
    j.add(button);

Проблема в том, что когда я запускаю его в Eclipse, он работает отлично, но когда я экспортирую его в файл .jar, программа открывается и вроде бы работает, но когда я пытаюсь нажать кнопку, ничего не происходит. Он не падает или что-то в этом роде, просто ничего не происходит независимо от того, сколько раз я нажимаю кнопку.

Вот код класса, из которого предыдущий код получал метод «конвертировать»:

public class ptoj {
public static int convert(String n, String path) throws Exception{
    try (final PDDocument document = PDDocument.load(new File(n))){
        PDFRenderer pdfRenderer = new PDFRenderer(document);
        for (int page = 0; page < document.getNumberOfPages(); ++page)
        {
            BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
            String fileName;
            if (page < 10)
            {
                fileName = path + "yourFile-0" + page + ".jpg";
            }
            else
            {
                fileName = path + "yourFile-" + page + ".jpg";
            }
            ImageIOUtil.writeImage(bim, fileName, 300);
        }
        document.close();
        return document.getNumberOfPages();
    } catch (IOException e){
        System.err.println("Exception while trying to create pdf document - " + e);
    }
    return 0;
}

}

Может ли быть так, что ваша банка запускается без разрешений, необходимых для чтения вашей файловой системы?

khelwood 09.03.2019 17:23

Вы пытались запустить программу в командной строке, чтобы была консоль для сообщений об ошибках? Откройте командную строку в папке с файлом jar и введите: java -jar <JarFilename.jar>

NormR 09.03.2019 17:25

Когда я запускаю его в командной строке, по какой-то причине кнопка работает, и появляется FileChooser, но когда я пытаюсь выбрать файл, командная строка говорит: java.io.FileNotFoundException: C:\UseryourFile-00.jpg (Доступ запрещен )

Harry Gao 09.03.2019 17:38

Кстати, я добавил код для класса, который я использую для преобразования PDF в JPG.

Harry Gao 09.03.2019 17:44

C:\UseryourFile-00.jpg (Доступ запрещен) --- Отсутствует ли разделитель пути (\) после пользователя в этом пути? C:\User\yourFile-00.jpg

NormR 09.03.2019 22:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
136
0

Другие вопросы по теме