problema con librerías externas y jar

Iniciado por Nephewless, 8 Octubre 2012, 18:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Nephewless

A ver si me podéis echar una mano porque voy algo perdido :(

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:
CitarException 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.

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..

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);
    }

}


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();
}
}
Nothing real!

sapito169

las librerías externas siempre deben estar en todas las maquinas en las que las instales tu programa

Ademas esas librerías deben estar correctamente configuradas en el jar principal




Nephewless

Cuando creo el jar ejecutable me da tres opciones:
- Extract required libraries into generated JAR
- Package required librarires into generated JAR
- Copy required libraries into a sub-folder next to the generated JAR

No se supone que la segunda te empaqueta las librerías necesarias (entiendo que todas...) dentro del jar?
A que te refieres con que deben estar correctamenet configuradas?

Alguna idea de como solventar el problema sin tener que "obligar" a los usuarios instalar todos los programas y recompilarlo?  :-\

Muchas gracias!
Nothing real!

sapito169

la verdad que yo tampoco lo entiendo por que debería ser como tu dijiste

mira yo he trabajado correctamente con la tercera opción y me fue posible trabajar de esta manera


Sigue estos pasos generas el jar usando la tercera opción 
luego el ide te generara tu jar y una carpeta lib
luego copias y pegas el jar y la carpeta lib en todos los clientes



sapito169

podemos hacer lo siguiente
toma fotos de tu pantalla mientras creas los jar luego lo posteas
y yo te corrigo