有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Linux上的Java小程序无法获得权限

我正在参加一个在线课程,我偶尔会挂断电话,因为这个课程是半以windows为中心的。目前我有一个java小程序,我正试图用它来播放音频剪辑。我使用的是Idea Intellij,我将音频文件放在与类文件相同的位置。我还更新了idea用于运行小程序的策略文件,但无论我做什么,它似乎都找不到音频文件。我75%确定这是我在策略文件中没有弄明白的(啊!),但我不知道那是什么。当我尝试运行它时,我将粘贴一个代码段、策略文件和一些输出。请帮助-这是我第二次因为linux特定的差异而陷入困境

为格式错误道歉

    public class MyApplet extends JApplet implements ActionListener
    {
        JButton play, stop;
        AudioClip audioClip;
        File myAudioFile;

        public void init()
        {
            play = new JButton("Play");
            play.addActionListener(this);

            stop = new JButton("Stop");
            stop.addActionListener(this
    [...took out unnecessary stuff...]
            System.out.println("Codebase is: " + getCodeBase());
            myAudioFile = new File(getCodeBase().toString()+"desktop-login.ogg");
            if(myAudioFile.exists()) {
                audioClip = getAudioClip(getCodeBase(), "desktop-login.ogg");
            }
            else {
                System.out.println("Failed to find file:"+ audioClip);
            }

        }
[...took out unnecessary stuff...]
    //------------------POLICY FILE CONTENTS--
    grant {
      permission java.security.AllPermission;
      permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
    };

    grant codeBase "file:/home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/*" {
      permission java.util.PropertyPermission "user.home", "read";
    }; 

    //--------output (scrubbed a bit - it's failing at the audio clip play part because the audioClip object is null): 
    Codebase is: file:/home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/
    Failed to find file:null
    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at MyApplet.actionPerformed(MyApplet.java:48)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 

共 (2) 个答案

  1. # 1 楼答案

    好吧,我觉得很傻。结果证明,他正在尝试加载。linux上本机java中的ogg文件不起作用。我原以为它会使用基于Linux的编解码器,但我错了。它将使用java可以本地解码的东西——例如。wav文件。当我切换到。wav文件一切都很愉快,并开始工作。嘘

  2. # 2 楼答案

    像这样使用文件路径并尝试

    file:////home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/