[英]Java Applet on Linux unable to gain Permissions
我正在上在线课程,有时会挂断电话,因为该课程是以半窗口为中心的。 目前,我有一个Java小程序,试图在其中播放音频剪辑。 我正在使用Idea Intellij,并将音频文件与类文件放在同一位置。 我还更新了这个想法用来运行applet的策略文件,但是无论我做什么,它似乎都找不到音频文件。 我有75%的把握是策略文件(argh!)尚未弄清楚,但是我不知道那是什么。 我将粘贴代码段,策略文件以及尝试运行它时的一些输出。 请帮忙-这是我第二次因为特定于Linux的差异而陷入困境。
抱歉打for ...
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)
使用这样的文件路径并尝试
file:////home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/
好,我觉得很傻。 原来试图在Linux上的本机Java中加载.ogg文件是行不通的。 我以为它将使用基于Linux的编解码器,但我错了。 它将使用Java可以本地解码的内容-例如.wav文件。 当我切换到.wav文件时,一切都很高兴,并开始工作。 嘘!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.