在全新安装 Big Sur 和 AdoptOpenJDK 11 的 MacBook Pro (2015) 上,我开发了一个使用 JFileChooser 的用于教育目的的 Java 程序。我没有使用任何特定于 IDE 的代码。由于程序的其余部分无关紧要,这里有一个对我产生相同问题的最小示例(注意:这里仅作为示例,单击按钮将打开文件选择器,选择一个文件并单击确定将更改按钮的文本为“确定”):
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
或用 jar 编译java -jar Test.jar
)一切正常。我可以打开文件选择器,它会显示我磁盘上的文件和文件夹。
如果我通过双击启动编译的jar ,程序也会启动,但是如果我打开文件选择器,我看不到磁盘上的任何文件,因此我无法加载数据并将数据保存到磁盘。
由于我的 Mac 上只有这些问题(不在 Windows 10 或 Lubuntu Linux 上),这可能是一个非常具体的问题,因为我的 Mac 上的 Java 设置错误。但是,当我安装了 Big Sur 和 AdoptOpenJDK 11 for Mac 的新副本而没有进行任何更改时,我想知道其他想要运行我的程序的人(教师和学生)是否会出现这个问题。
那么可能是什么问题以及如何解决这个问题(对于我和可能的其他人)?
我已经通过活动监视器发现双击的 jar 加载了 JavaLauncher(但我在磁盘上找不到它,也无法更改任何系统设置)。
我也在这里搜索过类似的问题。但这些主要与将文件保存在错误的路径上有关。
很高兴找到解决方案。谢谢你的回答!