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);
}
} ///:~
当我退出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);
}
} ///:~
protected void finalize() throws Throwable {
// TODO
}
我估计是DLL进程在运行,所以java界面即便退出了,javaw还是结束不了。
不过上面就是所有Java部分的程序了,应该在finalize()里面增加什么才能结束javaw进程呢?
能结束那个DLL的运行么?
多谢啦
后来发现问题的根本在DLL程序里面解构函数没有停掉后台运行的进程。
问题已经搞定:)