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

来源:互联网 发布:nginx使用场景 编辑:程序博客网 时间:2024/05/21 06:39
使用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
 
  至此,这个问题终于有了圆满的解答,虽然折腾了一晚上,但是毕竟还是有收获的,我把自己的思考过程都记录下来,也希望遇到类似问题的朋友能够少走一些弯路,尽快解决问题,多学习一些东西。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 笔记本电脑无线网卡坏了怎么办 笔记本内置无线网卡坏了怎么办 笔记本无线网卡坏了怎么办 wif连上不能上网怎么办 手机wifi有个感叹号怎么办 分手不删qq微信怎么办 优盘提示被锁了怎么办 电视无线网卡插上没反应怎么办 光猫没有wan口怎么办 usb无线网卡坏了怎么办 wifi接收器电脑不识别怎么办 无线路由接收器识别不了怎么办 小米3一直闪红灯怎么办 手机拨号键删了怎么办 联想笔记本电脑无线网卡坏了怎么办 联想z360内置无线网卡坏怎么办 usb无线网卡驱动安装失败怎么办 无线网被禁用了怎么办 未连接无线通信已关闭怎么办 手机设置路由器打不开了怎么办 手机打不开登录路由器的网址怎么办 按了光猫复位后怎么办 按了猫的复位键怎么办 望远镜的镜片小水雾是怎么办 坚果r1不断重启怎么办 忘记Wi-Fi密码了怎么办 魅蓝手机null锁住了怎么办 红米手机锁屏了怎么办 不记得锁屏密码怎么办 小米手机音量键坏了怎么办 小米6音量键坏了怎么办 小米2s开不开机怎么办 小米4不充电了怎么办 小米2开不开机怎么办 手机开机键开不了机怎么办 三星s4反复重启怎么办 小米5反复重启怎么办 电脑系统奔溃了怎么办 电脑开机后屏幕出现英文怎么办 小米4开不开机了怎么办 小米4一直显示mi怎么办