为什么 jar 文件在通过双击启动时没有从磁盘读取的权限 - 但如果从终端启动则没有?

问题描述

在全新安装 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或使用java -jar Test.jar编译为jar)启动程序一切正常。我可以打开文件选择器,它会显示我磁盘上的文件和文件夹。

如果我通过双击启动编译的jar,程序也会启动,但是如果我打开文件选择器我在我的磁盘上看不到任何文件并且因此我无法加载和保存数据到磁盘。

由于我的 Mac 上只有这些问题(在 Windows 10 或 Lubuntu Linux 上没有),这可能是一个非常具体的问题,因为我的 Mac 上的 Java 设置是错误的。但是,由于我在没有更改任何内容的情况下为 Mac 安装了 Big Sur 和 AdoptOpenJDK 11 的新副本,我想知道其他想要运行我的程序的人(老师和学生)是否会出现此问题。

那么可能是什么问题以及如何解决这个问题(对我和其他人来说)?

我已经通过活动监视器发现双击的 jar 是用 JavaLauncher 加载的(但我在磁盘上找不到它,我也无法为此更改任何系统设置)。 >

我也在这里搜索过类似的问题。但这些主要与将文件保存在错误的路径上有关。

很高兴找到解决方案。感谢您的回答!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)