Java 小程序文件访问

Java 小程序文件访问,java,fonts,applet,mp3,access-denied,Java,Fonts,Applet,Mp3,Access Denied,我一直在开发一个音频播放器小程序,但在网络浏览器中运行时遇到了问题。它在eclipse中的applet viewer中工作得很好,但当我在Google Chrome中尝试它时,它就不起作用了。我甚至尝试了eclipse生成的applet文件,但它也不起作用,可能与eclipse运行它的方式有关 这是html文件,但不允许访问mp3文件或我制作的特殊字体: <html> <meta http-equiv="Content-Type" content="text/html; ch

我一直在开发一个音频播放器小程序,但在网络浏览器中运行时遇到了问题。它在eclipse中的applet viewer中工作得很好,但当我在Google Chrome中尝试它时,它就不起作用了。我甚至尝试了eclipse生成的applet文件,但它也不起作用,可能与eclipse运行它的方式有关

这是html文件,但不允许访问mp3文件或我制作的特殊字体:

<html>

<meta http-equiv="Content-Type" content="text/html; charset=MacRoman"/>

<body>

<applet code="DOSPlayer.class" archive="DOSPlayer.jar, basicplayer3.0.jar, commons-logging-1.1.1.jar, mp3spi1.9.5.jar, tritonus_share-0.3.6.jar, jl1.0.1.jar" width="450" height="350" >

</applet>

</body>

</html>

我收到的错误是,由于访问权限,它无法访问文件:

java.security.AccessControlException: access denied (java.io.FilePermission fonts\DOSFont.ttf read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at DOSPlayer.initFont(DOSPlayer.java:398)
    at DOSPlayer.<init>(DOSPlayer.java:413)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.reflect.InvocationTargetException
    at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission mp3 read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at java.io.File.list(Unknown Source)
    at java.io.File.listFiles(Unknown Source)
    at DOSPlayer.getFiles(DOSPlayer.java:259)
    at DOSPlayer.<init>(DOSPlayer.java:415)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Exception: java.lang.reflect.InvocationTargetException
java.security.AccessControlException:拒绝访问(java.io.FilePermission fonts\DOSFont.ttf read)
位于java.security.AccessControlContext.checkPermission(未知源)
位于java.security.AccessController.checkPermission(未知源)
位于java.lang.SecurityManager.checkPermission(未知源)
位于java.lang.SecurityManager.checkRead(未知源)
位于java.io.FileInputStream。(未知源)
位于DOSPlayer.initFont(DOSPlayer.java:398)
在DOSPlayer。(DOSPlayer.java:413)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.lang.Class.newInstance0(未知源)
位于java.lang.Class.newInstance(未知源)
位于sun.plugin2.applet.Plugin2Manager$12.run(未知来源)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$000(未知源)
在java.awt.EventQueue$1.run处(未知源)
在java.awt.EventQueue$1.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)
java.lang.reflect.InvocationTargetException
位于com.sun.deploy.util.DeployAWTUtil.invokeAndWait(未知源)
位于sun.plugin2.applet.Plugin2Manager.runOnEDT(未知源)
位于sun.plugin2.applet.Plugin2Manager.createApplet(未知源)
位于sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(未知源)
位于java.lang.Thread.run(未知源)
原因:java.security.AccessControlException:拒绝访问(java.io.FilePermission mp3读取)
位于java.security.AccessControlContext.checkPermission(未知源)
位于java.security.AccessController.checkPermission(未知源)
位于java.lang.SecurityManager.checkPermission(未知源)
位于java.lang.SecurityManager.checkRead(未知源)
位于java.io.File.list(未知源)
位于java.io.File.listFiles(未知源)
在DOSPlayer.getFiles(DOSPlayer.java:259)
在DOSPlayer。(DOSPlayer.java:415)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.lang.Class.newInstance0(未知源)
位于java.lang.Class.newInstance(未知源)
位于sun.plugin2.applet.Plugin2Manager$12.run(未知来源)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$000(未知源)
在java.awt.EventQueue$1.run处(未知源)
在java.awt.EventQueue$1.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)
异常:java.lang.reflect.InvocationTargetException
我知道错误来自以下两段代码:

     //path is "mp3/"
public String[] getFiles(String path) {

              String[] songs = new String[501];
              String files;
              File folder = new File(path);
              File[] listOfFiles = folder.listFiles(); 
              //gets all mp3 files within mp3 folder
             try {
              for (int i = 0; i < listOfFiles.length; i++) {

               if (listOfFiles[i].isFile()) 
               {
               files = listOfFiles[i].getName();
                    if (files.endsWith(".mp3")) {
                            songs[songNum] = files;
                            songNum++;
                            playableSongs++;
                    }
                 }
              }
             } catch (Exception e) {
                 System.out.println("Error Here");
                 e.printStackTrace();
                 return null;
             }
              return songs;


}

/////////////////////////////////

public void initFont() {
        try {
            //URL fontUrl = new URL("fonts/DOSFont.ttf");
            File file = new File("fonts/DOSFont.ttf"); // where ever it is from

            FileInputStream fontPath = new FileInputStream(file);
            dosFont = Font.createFont(Font.TRUETYPE_FONT, fontPath);//fontUrl.openStream());
            dosFont = dosFont.deriveFont(Font.PLAIN,19);
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            ge.registerFont(dosFont);
            font = true;
                } catch(Exception e) {
                    e.printStackTrace();
                    font = false;
                }
    }
//路径是“mp3/”
公共字符串[]获取文件(字符串路径){
字符串[]歌曲=新字符串[501];
字符串文件;
文件夹=新文件(路径);
File[]listOfFiles=folder.listFiles();
//获取mp3文件夹中的所有mp3文件
试一试{
for(int i=0;iURL urlToFont = this.getClass().getResource("/path/in/jar/to/the.ttf");
File[] listOfFiles = folder.listFiles();