JMF getDeviceLIst 得到null解决方案

这两天用JMF做了个小聊天程序,当用ant打包成executable  jar以后,用命令行如何运行都出现getDeviceList返回null的情况,怒的很,最后查阅好多资料。

              有两种情况出现这种异常:
       一、JMF安装完成以后,使用JMFRegister进行硬件 detected以及register。如果detected的时候,没有检测到这些硬件,那么程序运行的时候,就会出现这种异常。如果是种情况,那么检查jmf安装是否正确,以及jdk、jre是否正常安装,以及注意:jmf版本低,只支持32为jdk;或者是硬件无效等问题
             二、第二种情况,是JMFregister以及detected都成功,检测出了音频、视频设备,但是在程序运行的时候,从事出现getDeviceLIst为null的情况。
            这种情况比较烦恼,但是也没什么烦恼的。我就遇到这种情况。
            我的程序在Eclipse中运行正常,但是用ant打包成可执行jar以后,怎么运行都是getDeviceList为null的情况,着急上火了一上午。后来发现,查资料,以及对比eclipse的环境配置,最后把问题解决了!
           关键在于:必须导入%jmfhome%/lib   下边的所有的jar包导入;但是,导入一定要指定到jmf安装目录引用式导入,如果是将%jmfhome%/lib下边的jar包考到项目下导入项目路径,可能也会遇到上述问题,至少我是这样遇到问题的。
          下边说一下我的run.bat 来运行那个基于jmf的项目吧;
     
         start java -Djava.ext.dirs=.;%CLASSPATH%;lib -jar chatclient-2012-08-23.jar
       
         chatclient*-.jar 是可执行jar文件,使用-Djava.ext.dirs=.;%CLASSPATH%;lib   设置运行的环境,classpath中包含了jmf的classpath设置,在安装jmf的时候需要配置的。lib是项目本身需要的jar包,这个run.bat文件时放在项目的根目录下的。
   
         这样运行,一切正常,没有任何jmf问题。这个方法至少能解决部分问题。


参考: http://www.cnblogs.com/perhaps/archive/2010/07/10/1775053.html
           

你可能感兴趣的:(Java)