Почему файл jar не имеет разрешений на чтение с диска при запуске двойным щелчком мыши, но не при запуске из терминала? ⇐ JAVA
Почему файл jar не имеет разрешений на чтение с диска при запуске двойным щелчком мыши, но не при запуске из терминала?
На MacBook Pro (2015 г.) с только что установленным Big Sur и AdoptOpenJDK 11 я разработал программу Java для образовательных целей, которая использует JFileChooser. Я не использовал какой-либо код, специфичный для IDE. Поскольку остальная часть программы не имеет значения, вот минимальный пример, который вызывает у меня ту же проблему (Примечание: здесь только в качестве примера: нажатие кнопки откроет окно выбора файлов, выбор файла и нажатие кнопки ОК изменит текст кнопки на «ОК»)):
import javax.swing.*; импортировать java.awt.event.*; общедоступный класс Test расширяет JFrame, реализует ActionListener { частный JFileChooser jf; частный JButton jb; публичный тест() { setSize(480,320); jf = новый JFileChooser(); jf.setDialogType(JFileChooser.OPEN_DIALOG); jb = new JButton("НАЖМИТЕ МЕНЯ"); jb.addActionListener(это); добавить (ДжБ); SetVisible (истина); } общественный недействительный actionPerformed (ActionEvent e) { если (e.getSource().equals(jb)) { jf.setVisible(истина); окончательный результат int = jf.showOpenDialog(null); если (результат == JFileChooser.APPROVE_OPTION) { jb.setText("ОК"); } } } public static void main(String[] args) { новый тест(); } } Если я запускаю программу через терминал (java Test или скомпилирую ее как jar с помощью java -jar Test.jar) все работает нормально. Я могу открыть инструмент выбора файлов, и он отобразит мои файлы и папки на моем диске.
Если я запускаю скомпилированный jar двойным щелчком мыши, программа также запускается, но если я открою окно выбора файлов, я не увижу ни одного файла на своем диске и следовательно, я не могу загружать и сохранять данные на диск.
Поскольку эти проблемы возникают только на моем Mac (а не на Windows 10 или Lubuntu Linux), это может быть очень специфической проблемой из-за неправильных настроек Java на моем Mac. Однако, поскольку я установил новую копию Big Sur и AdoptOpenJDK 11 для Mac, ничего не меняя, мне интересно, может ли эта проблема возникнуть у других людей, которые хотят запустить мою программу (преподавателей и студентов).
Так в чем же может быть проблема и как ее решить (для меня и, возможно, для других)?
С помощью монитора активности я уже понял, что jar с двойным щелчком мыши загружается с JavaLauncher (но я не могу найти его на диске и не могу изменить для этого какие-либо системные настройки). Я также искал здесь подобные проблемы. Но в основном это было связано с сохранением файлов по неверным путям.
Было бы здорово найти решение. Спасибо за ответ!
На MacBook Pro (2015 г.) с только что установленным Big Sur и AdoptOpenJDK 11 я разработал программу Java для образовательных целей, которая использует JFileChooser. Я не использовал какой-либо код, специфичный для IDE. Поскольку остальная часть программы не имеет значения, вот минимальный пример, который вызывает у меня ту же проблему (Примечание: здесь только в качестве примера: нажатие кнопки откроет окно выбора файлов, выбор файла и нажатие кнопки ОК изменит текст кнопки на «ОК»)):
import javax.swing.*; импортировать java.awt.event.*; общедоступный класс Test расширяет JFrame, реализует ActionListener { частный JFileChooser jf; частный JButton jb; публичный тест() { setSize(480,320); jf = новый JFileChooser(); jf.setDialogType(JFileChooser.OPEN_DIALOG); jb = new JButton("НАЖМИТЕ МЕНЯ"); jb.addActionListener(это); добавить (ДжБ); SetVisible (истина); } общественный недействительный actionPerformed (ActionEvent e) { если (e.getSource().equals(jb)) { jf.setVisible(истина); окончательный результат int = jf.showOpenDialog(null); если (результат == JFileChooser.APPROVE_OPTION) { jb.setText("ОК"); } } } public static void main(String[] args) { новый тест(); } } Если я запускаю программу через терминал (java Test или скомпилирую ее как jar с помощью java -jar Test.jar) все работает нормально. Я могу открыть инструмент выбора файлов, и он отобразит мои файлы и папки на моем диске.
Если я запускаю скомпилированный jar двойным щелчком мыши, программа также запускается, но если я открою окно выбора файлов, я не увижу ни одного файла на своем диске и следовательно, я не могу загружать и сохранять данные на диск.
Поскольку эти проблемы возникают только на моем Mac (а не на Windows 10 или Lubuntu Linux), это может быть очень специфической проблемой из-за неправильных настроек Java на моем Mac. Однако, поскольку я установил новую копию Big Sur и AdoptOpenJDK 11 для Mac, ничего не меняя, мне интересно, может ли эта проблема возникнуть у других людей, которые хотят запустить мою программу (преподавателей и студентов).
Так в чем же может быть проблема и как ее решить (для меня и, возможно, для других)?
С помощью монитора активности я уже понял, что jar с двойным щелчком мыши загружается с JavaLauncher (но я не могу найти его на диске и не могу изменить для этого какие-либо системные настройки). Я также искал здесь подобные проблемы. Но в основном это было связано с сохранением файлов по неверным путям.
Было бы здорово найти решение. Спасибо за ответ!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение