Estoy en medio de un proyecto en el que una funcionalidad es capturar imagenes de las webcams instaladas en el PC en concreto.
Para poder capturar dichas imágenes he usado librerías javacv, y he tenido que instalar el OpenCV-2.4.2 y vcredist_x64. (no se muy bien porque, pero era la única manera de conseguir compilarlo y tal...)
Bueno, la cosa es que uso eclipse, y para poder compilar tengo que añadir al proyecto la librería javacv como ya he dicho anteriormente. Una vez hecho todo esto, ejecuto el programa y corre perfectamente!
El problema viene cuando construyo el proyecto, empaquetandolo todo en un .jar, y llevo ese .jar a otro pc... No funciona... Lo he probado en linux, lo he probado en windows, lo he probado en mac... incluso lo he probado en otro pc con todo lo anteriormente dicho instalado, y nada. O compilo (y para compilar tengo que instalar todo eso) y ejecuto, o si lo llevo a otra máquina, nada..
El error que me da es el siguiente:
Citar
Exception in thread "main" java.lang.NoClassDefFoundError: hacerfotos/jar
Caused by: java.lang.ClassNotFoundException: hacerfotos.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: hacerfotos.jar. Program will exit.
Caused by: java.lang.ClassNotFoundException: hacerfotos.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: hacerfotos.jar. Program will exit.
No se por donde tirar... Alguna sugerencia?
Muchas gracias de antemano!
Un saludo!
P.D.: Os dejo también los códigos que uso para capturar la cam y tal..
Código:
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import com.googlecode.javacv.cpp.opencv_highgui;
import com.googlecode.javacv.cpp.opencv_highgui.CvCapture;
public class Webcam {
public static void main(String[] args) throws Exception {
CvCapture capture = opencv_highgui.cvCreateCameraCapture(0);
opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_HEIGHT, 720);
opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_WIDTH, 1280);
IplImage grabbedImage = opencv_highgui.cvQueryFrame(capture);
CanvasFrame frame = new CanvasFrame("Webcam");
while (frame.isVisible() && (grabbedImage = opencv_highgui.cvQueryFrame(capture)) != null) {
frame.showImage(grabbedImage);
}
frame.dispose();
opencv_highgui.cvReleaseCapture(capture);
}
}
Código:
private static void captureFrame() {
// 0-default camera, 1 - next...so on
final OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
try {
grabber.start();
IplImage img = grabber.grab();
Date date = new Date();
String nombre = String.valueOf(date.getTime());
if (img != null) {
cvSaveImage(nombre+".jpg", img);
}
} catch (Exception e) {
e.printStackTrace();
}
}