我一直在尝试用Netbeans RCP开发一个应用程序来从网络摄像头抓取图像。简单明了,它可以在常规Java项目中工作。
所以首先必须安装JMF(我在Windows 7 64位,(32位JDK需要JMF)。
在一个常规的Java项目中,我有以下代码:Vector webcams = CaptureDeviceManager.getDeviceList(null);
int length = webcams.size();
System.out.println("length: " +length);
输出为"length: 1"(1个网络摄像头连接)
当我在我的Netbeans平台项目中这样做时,输出是"length: 0"。
基本上我有我的Netbeans项目套件两个模块:
- JMF库(使用JMF .jar的包装模块)
- 摄像头模块(包含1个java文件与上述代码)
我将JMF库模块作为一个依赖项添加到Webcam模块中,但这并没有奏效。我还可以确认设置了类路径:
Boot & Ext. Classpath = C:Program Files (x86)Javajdk1.6.0_25jrelibresources.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibrt.jar;
C:Program Files (x86)Javajdk1.6.0_25jrelibsunrsasign.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibjsse.jar;
C:Program Files (x86)Javajdk1.6.0_25jrelibjce.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibcharsets.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibmodulesjdk.boot.jar;C:Program Files (x86)Javajdk1.6.0_25jreclasses;C:Program Files (x86)Javajdk1.6.0_25jrelibextdnsns.jar;**C:Program Files (x86)Javajdk1.6.0_25jrelibextjmf.ja**r;
C:Program Files (x86)Javajdk1.6.0_25jrelibextlocaledata.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibextsound.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibextsunjce_provider.jar;
C:Program Files (x86)Javajdk1.6.0_25jrelibextsunmscapi.jar;C:Program Files (x86)Javajdk1.6.0_25jrelibextsunpkcs11.jar
我真的被困在这里了。Netbeans RCP有什么特别之处,以至于添加jmf.jar作为包装器模块似乎会破坏这段代码?如果有人能提供一些建议来帮助我获得更多的调试信息来跟踪问题,我将非常感激。
编辑:经过反复试验,我找到了以下解决方案:
Copy c:Progra.... x86JMF...lib* to c:Program .. x86jdklib*
Including the jmf.properties file
然而,我很高兴这是有效的,一旦应用程序转移到另一个客户端PC使用,它将不会有那些库在那里。
所以我真的不知道如何用Netbeans RCP解决这个问题。能有多难呢?我将jar文件添加到包装器中,还将.properties文件放在/release/modules/ext文件夹中。
请帮我一下:)
当我在Netbeans使用JMF时。我必须这样做:
- 将程序文件x86中的所有5 .jar添加到
tools --> libraries
- 右键单击项目的
libraries
- 在项目窗格中,单击
add library
- 选择要添加5个jar的库
- 使用JMF注册表检查您的网络摄像头是否被检测到
这所有的
您必须在build.xml中添加:属性必须在编译dist文件夹中,靠近你的your_jar.jar!!)
进入项目浏览器的"文件"选项卡,并添加到build.xml
(JMF由我在c:JMF…)
<target name="-post-compile">
<copy file="C:JMFlibjmf.properties" todir="${dist.dir}"/>
</target>