整体环境:eclipse8+jdk1.8
在初学java的applet编程时,可能会遇到这样的问题:音频文件无法播放出声音,视频文件无法正常播放
在找了一段时间代码bug发现没有任何错误后,你气的大喷eclipse真垃圾,连个applet都不能正常播放,然后再diss applet早被淘汰了,为什么还要用它!
(虽然applet差不多被淘汰是因为java有了更好的选择,比如用JFrame能更好的实现applet功能,而且可以使用main函数作为程序入口,能和其他代码完美的搭配起来;
相比起来,applet只能放在网页上运行,而且程序入口并不是main,再加上applet很难做出炫到满天飞的UI,显然现在applet毫无用武之地,但Java的播放音频等功能还是放在appet类库里面的,所以你学了applet并不吃亏,可以很好的应用在JFrame上)
闲话少说,进入正题:
虽然你播放不出音乐,但是。。applet和eclipse表示并不背这个锅——
先检查一下你给的音频文件是不是.wav后缀,不是的话先下载个格式工厂之类的转换软件把它转成.wav后缀
再看看你音频文件放的位置,要放在你所在的项目的bin目录下(用eclipse直接运行),也就是applet的getCodeBase()方法输出的url
具体做法:
我们可以看到getCodeBase返回了bin目录下,那么你就老老实实地把这个音频文件放在该目录下。
像这样就可以了。
解释eclipse在运行applet时的操作:
我们可以看到在bin目录下有个java.policy.applet的applet文件,你可以打开它看看,
发现是这样:
它的作用是授予执行代码java的所有权限。
这个文件是你运行applet后产生的,原因是因为applet运行的安全级别要求比较高,所以要拓宽它的权限。
除了这个applet文件外,我们还可以看到出现了一个html文件,这个文件你可以打开看看,如下:
很明显,就是applet在浏览器上运行时借助的html文件
到这里你应该差不多清楚了,当你在eclipse运行java applet时,首先eclipse会用javac编译你所运行的java文件(也就是src的.java文件,在这里假设为test.java文件),然后得到一个test.class文件,放在bin目录里,同时自产生一个html文件,然后通过与浏览器交互把运行结果给显示出来。
我们可以看到最终是要运行html文件,所以你的资源文件比如123.wav就必须要放到和html同目录的地方,也就是bin目录下。
那么我们也可以知道在命令行怎么运行applet:
先cmd进src目录,然后javac test.java 得到一个有JVM编译的class文件,然后自己写一个test.html文件,把applet code = "test.class"设置好,然后cmd appletviewer test.html运行