在一台安装了Big Sur和AdoptOpenJDK 11的MacBook Pro(2015)上,我开发了一个用于教育目的的Java程序,该程序使用JFileChooser。我没有使用任何特定于IDE的代码。由于程序的其余部分并不重要,这里给出了一个最小化的示例,它对我产生了相同的问题(注意:这只是一个示例,单击按钮将打开文件选择器,选择一个文件并单击“确定”将更改按钮的文本为“OK”)。
如果我通过终端启动程序(使用“java Test”或者编译成带有“java -jar Test.jar”命令的jar包),一切正常。我可以打开文件选择器并显示磁盘上的文件和文件夹。
如果我通过双击编译的jar包启动程序,程序也能启动,但是如果我打开文件选择器,我看不到磁盘上的任何文件,因此我无法读取和保存数据到磁盘中。
由于这些问题只在我的Mac上出现(而不是在Windows 10或Lubuntu Linux上),所以这可能是由于我Mac上错误的Java设置导致的非常特定的问题。然而,由于我安装了最新的Big Sur和适用于Mac的AdoptOpenJDK 11,且没有进行任何更改,我想知道是否其他人运行我的程序时也会遇到此问题(教师和学生)。
那么问题可能是什么,如何解决这个问题(对我和其他人)呢?
我已经通过活动监视器找到了通过双击加载的jar包是由JavaLauncher加载的(但我找不到它在哪里,并且我不能更改任何系统设置)。
我还在这里搜索类似的问题。但这些问题大多与将文件保存到错误路径有关。
希望能找到解决方案。感谢您的回答!
import javax.swing.*;
import java.awt.event.*;
public class Test extends JFrame implements ActionListener {
private JFileChooser jf;
private JButton jb;
public Test() {
setSize(480,320);
jf = new JFileChooser();
jf.setDialogType(JFileChooser.OPEN_DIALOG);
jb = new JButton("CLICK ME");
jb.addActionListener(this);
add(jb);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(jb)) {
jf.setVisible(true);
final int result = jf.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
jb.setText("OK");
}
}
}
public static void main(String[] args) {
new Test();
}
}
如果我通过终端启动程序(使用“java Test”或者编译成带有“java -jar Test.jar”命令的jar包),一切正常。我可以打开文件选择器并显示磁盘上的文件和文件夹。
如果我通过双击编译的jar包启动程序,程序也能启动,但是如果我打开文件选择器,我看不到磁盘上的任何文件,因此我无法读取和保存数据到磁盘中。
由于这些问题只在我的Mac上出现(而不是在Windows 10或Lubuntu Linux上),所以这可能是由于我Mac上错误的Java设置导致的非常特定的问题。然而,由于我安装了最新的Big Sur和适用于Mac的AdoptOpenJDK 11,且没有进行任何更改,我想知道是否其他人运行我的程序时也会遇到此问题(教师和学生)。
那么问题可能是什么,如何解决这个问题(对我和其他人)呢?
我已经通过活动监视器找到了通过双击加载的jar包是由JavaLauncher加载的(但我找不到它在哪里,并且我不能更改任何系统设置)。
我还在这里搜索类似的问题。但这些问题大多与将文件保存到错误路径有关。
希望能找到解决方案。感谢您的回答!