Java调用了一个用VC编写的DLL进程,此进程负责实时显示网络摄像头的内容。
当我退出Java程序,再运行,摄像头就无法初始化了。我看了一下,是因为还有个javaw的进程在那,我手动结束此进程之后,才可以继续初始化摄像头。想请假大侠们,如何才能结束这个javaw进程啊?
我的类继承自JApplet类,其他帖的
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
方法不适用。
另外,我试着将此类改成继承自JFrame类,结果发现比原来还额外多出来一个Javaw进程,晕啊。请高手指点,谢谢。
Java程序如下:public class MyVideo extends JApplet{  private static final long serialVersionUID = 1L; public MyVideo(){
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
  private native int showVideo(int a, int b);
  private native void cameraInit();
  static {
    System.loadLibrary("MyVideo");
  }
     
  public static void main(String[] args) {
    MyVideo app = new MyVideo();
    app.cameraInit();
    app.showVideo(50,10);     
  }
} ///:~

解决方案 »

  1.   

    在MyVideo类中加上finalize() 方法
    protected void finalize() throws Throwable {
    // TODO 
    }
      

  2.   

    多谢二楼朋友的指导。
    我估计是DLL进程在运行,所以java界面即便退出了,javaw还是结束不了。
    不过上面就是所有Java部分的程序了,应该在finalize()里面增加什么才能结束javaw进程呢?
    能结束那个DLL的运行么?
    多谢啦
      

  3.   

    我用TerminateProcess确实能够结束javaw进程,不过只要开eclipse,就有有两个相同名字的javaw.exe在运行,很难区别。
    后来发现问题的根本在DLL程序里面解构函数没有停掉后台运行的进程。
    问题已经搞定:)