程序运行都没问题,包也调用正确,但是执行到   device = CaptureDeviceManager.getDevice(str2); 
就出错了
str2 的值是 str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
驱动也没写错,怎么不能在jar中运行啊,好郁闷...谁知道帮我解决一下, 谢谢了

解决方案 »

  1.   

    CaptureDeviceManager.getDevice
    把错误贴出来
    最好把getDevice这个方法也贴出来
      

  2.   

    import javax.media.Buffer;
    import javax.media.format.VideoFormat;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    import java.awt.Image;
    import javax.media.Player;
    import javax.media.CaptureDeviceManager;
    import com.sun.image.codec.jpeg.JPEGCodec;
    import java.net.Socket;
    import javax.media.CaptureDeviceInfo;
    import javax.media.MediaLocator;
    import java.io.IOException;
    import javax.media.control.FrameGrabbingControl;
    import javax.media.Manager;
    import javax.media.util.BufferToImage;
    import java.util.zip.ZipOutputStream;
    import java.util.zip.ZipEntry;
    import java.awt.image.BufferedImage;
    import pigeon.encode.encode;
    import pigeon.MainClass;
    import java.io.File;public class VideoControl extends Thread {    private Player player = null;
        private CaptureDeviceInfo device = null;
        private MediaLocator locator = null;
        private Buffer buffer = null;
        private BufferToImage b2i = null;
        private Image image = null;
        public JPEGImageEncoder encoder;
        //String str1 = "vfw:Logitech USB Video Camera:0";
        private String str2 = "vfw:Microsoft WDM Image Capture (Win32):0";
        private  ZipOutputStream os;
        boolean stop = false;
        private Socket socket;
        private String ip;
        public VideoControl(String ip,Socket socket) {
            this.ip=ip;
            this.socket=socket;
            getdevice();
       }
        private void getdevice()
        { device = CaptureDeviceManager.getDevice(str2); //得到设备
           locator = device.getLocator();    
            try {
                  player = Manager.createRealizedPlayer(locator);
                  player.start();
                 } catch (Exception e) {
             }
        }
    }其实应该是正确的代码,在jbluider中还可以运行的,在打包成jar后,运行还是可以,就是打不开摄像头
      

  3.   

    你自己写一个bat文件,来运行试试,bat文件就不用我教你写了吧!
    以上代码我试了,在Eclipse下确实在加载驱动的时候报错,但是直接用BOS命令行来运行是可以的,
    如果你用的是JDK6.0,那么会有几个警告,如果是JDK5.0,那么什么警告也没有