您现在的位置是:首页 > 正文

有关import sun.audio.AudioPlayer(或者其它文件)的问题

2024-04-01 03:24:05阅读 2

  今天白天在工作中使用Eclipse编译代码的时候,在播放声音的代码中报了这么一个错误

  import sun.audio.AudioPlayer;

  import sun.audio.AudioStream;

  上面这两句都报“Access restriction: The type AudioPlayer is not accessible due to restriction on required library C:\JDK1.5\jre\lib\rt.jar”的错误

 

  最开始我还以为是rt.jar有问题了,按照网上的办法把JRE System Library给remove掉,然后重新加进来,问题依旧。同事提示我是JDK版本有问题,他用的是JDK5,我的是JDK6,我抱着试试看的心理卸载掉了6装上了5,当时是没问题了,可是回家之后问题再次重现了。

 

  家里的环境是JDK1.5.0_u22,单位是u6,在u22编译下,问题再次发生。于是我怀疑这个问题不是出在JDK的版本上,JDK5和6中SwingUtilities的兼容性有一些问题(http://hi.baidu.com/java_2009/blog/item/ad36fa004e0513c2277fb5ab.html),但是对sun.audio.*的兼容性有问题我还没有听说过,所以我又开始查是不是Eclipse有什么设置导致了这个问题,因为rt.jar中明明有这些东西。

 

  后来查到可以用这个解决办法:在preference->java->complier->errors/warning->deprecated and restricted API把 Forbidden reference 的Error改成warning 即可(http://www.jtben.com/document/656034

 

  虽然到这一步,问题已经解决了,可是我还是不太明白,为什么这class在jar里面但是却访问受限,于是继续在网上查询相关的资料,后来发现了最准确的解释:

J2SE中的类大致可以划分为以下的各个包:java.*,javax.*,org.*,sun.*


  除了“sun”包,其它各个包都是Java平台的标准实现,并且今后也将被继续支持。一般说来,“sun”之类的包并不包含在Java平台的标准中,它与操作系统相关,在不同的操作系统(如Solaris,Windows,Linux,Mac等等)中的实现也各不相同,并且可能随着J2SE版本不定期变化。因此,直接调用“sun”包的程序代码并不是100%的Java实现。

 

  也就是说:“java.*”包,“javax.*”包,“org.*”包是作为J2SE的API公开接口的一部分,如果程序直接调用这些包中的API,那么程序是可以运行在所有Java平台上,而与操作系统无关;但“sun.*”包并不是API公开接口的一部分,调用“sun”包的程序并不能确保工作在所有Java平台上,事实上,这样的程序并不能工作在今后的Java平台上。


  正因为如此,“sun.*”包中的类并没有提供API文档。平台无关性是Java语言最大的优势之一,此外,SUN和Java许可证确保维持了今后API的向上兼容性(以后修改的那些有严重bug的代码除外)。这种兼容性意味着你写好的程序编译成的cl ass文件仍然可以工作在将来的版本当中。


  每家实现Java平台的厂商都可以使用他们自己的方式。“sun.*”包中的类是SUN 对Java平台的实现方式,它们工作在Java 2 SDK的下层,这些类未必被其它Java 平台开发商支持。比如你的Java程序如果调用了一个名为“sun.package.Foo”的类,将有可能产生“ClassNotFoundError”的错误,同时你也将失去利用Java的一个主要的优点。


  从技术上讲,并不能防止你的程序调用“sun.*”包中的类。在版本的变迁当中,这些类可能会被删除或转移到其它包路径下,而且它的接口(包括名称、标签等)也很有可能发生变化,(根据SUN的观点,我们应当能够通过对“sun.*”包的修改来提高Java平台的性能。)在这种情况下,即便你希望程序仅仅运行在SUN的实现平台下,你仍将承受新的版本给你的系统带来破坏的风险。总之,编写依赖于“sun.*”包的Java程序是不安全的,他们将变得无法移植,无法被很好地支持。(http://www.java-cn.com/club/html/36/n-3036.html

 

  至此,这个问题终于有了圆满的解答,虽然折腾了一晚上,但是毕竟还是有收获的,我把自己的思考过程都记录下来,也希望遇到类似问题的朋友能够少走一些弯路,尽快解决问题,多学习一些东西。

转载于:https://www.cnblogs.com/Cratical/archive/2011/05/11/2043756.html

网站文章

  • 将前端代码布置到服务器端后找不到静态资源

    将前端代码布置到服务器端后找不到静态资源

    将前端页面代码布置到服务器SpringMVC后,经常出现静态资源找不到的问题。 首先,应该设置springMVC,使其不要拦截静态资源。在springMVC的配置文件中添加如下代码:

    2024-04-01 03:23:59
  • 脚本forfiles(文件的查找和删除)

    脚本forfiles(文件的查找和删除)

    显示当前目录下的内容 不在要查找的目录上 -p:指定的路径 forfiles /p F:\data /m 查找的文件名掩码 forfiles /p F:\data -m *.pdf 查找不同类型的文件...

    2024-04-01 03:23:52
  • 动态播放幻灯片 计算机教案,小学信息技术《动态播放幻灯片-设置幻灯片文字的动画效果》教案...

    动态播放幻灯片 计算机教案,小学信息技术《动态播放幻灯片-设置幻灯片文字的动画效果》教案...

    一、教学目标1.能独立设置幻灯片文字的动画效果,合理选择动画效果。2.通过小组合作设置有个性的动画效果,锻炼学生的合作探究能力以及创新精神。3.通过本节课的学习,体会成功的喜悦,增强自信心,激发学生对...

    2024-04-01 03:23:10
  • storj简介

    storj简介

    概述Storj,这是来自美国StorjLabs公司旗下的项目,是在2014年首次被提出的,总共做了两次募资,第一次众筹了约50万美元,在上线测试版之后也就是2017年又进行了一次1CO,这次共筹得了约...

    2024-04-01 03:23:02
  • No value specified 报错

    今天遇到了 No value specified 这个问题:在控制台报了这样的错误:org.apache.commons.beanutils.ConversionException: No value specified at org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalC

    2024-04-01 03:22:56
  • 服务器安装nginx

    服务器安装nginx

    第二篇文章,安装nginx和ssl证书

    2024-04-01 03:22:50
  • 音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    前言前一篇我们知道了如何配置FFmpeg开发环境,接下来,就开始简单的推流吧。说道推流前,我们要知道常用的几个直播推流协议。直播推流协议在搭建服务之前先了解下目前主流的几个直播协议:RTMP:实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 ...

    2024-04-01 03:22:07
  • 引用数据类型_Java基础数据类型和引用类型的区别

    引用数据类型_Java基础数据类型和引用类型的区别

    一、数据类型Java中的数据类型分为两大类,基本数据类型和引用数据类型。1、基本数据类型基本数据类型只有8种,可按照如下分类 ①整数类型:long、int、short、byte ②浮点类型:float、double ③字符类型:char ④布尔类型:booleanNo.数据类型大小/位可表示数据范围默认值1byte(字节型)8-128~12702short(短整型)16-32768~32...

    2024-04-01 03:21:59
  • MySQL查询优化

    MySQL查询优化

    表数据皆为随机生成,身份证号、手机号、姓名、微信号等若有相同,纯属巧合。生成的数据仅用于测试说明问题,不必理会合理性。2.1.1、【用户表】t_user数据量:150w。

    2024-04-01 03:21:52
  • MySQL JDBC编程

    MySQL JDBC编程

    简单介绍了JDBC编程及对功能进行了封装。

    2024-04-01 03:21:11