programa para librerias generar empaquetar crear con compilar como comando archivos archivo java path jar classpath weka

java - para - generar un archivo jar en netbeans



No se puede ejecutar el archivo jar a pesar de tener establecido PATH y CLASSPATH (5)

Cuando el contenedor está en el classpath, significa que la biblioteca está disponible para el jvm. Cuando desee ejecutar un archivo jar (ejecutar es main), aún necesita proporcionar una ruta válida al archivo.

Mi pregunta es sobre la inclusión de archivos jar en la ruta. Tiene 2 partes

1) Estoy intentando ejecutar el archivo jar weka.jar ubicado en /home/andy/software/weka/weka.jar

La variable PATH apunta a este archivo jar (es decir, a /home/andy/software/weka/weka.jar) y también lo hace CLASSPATH.

Sin embargo, cuando intento ejecutar el jar usando java -jar weka.jar, aparece un error "No se puede acceder al archivo jar weka.jar".

¿Alguna idea de lo que está pasando? Estoy en Ubuntu Linux. Miré alrededor en SO y parece que no estoy haciendo nada que obviamente esté mal (ya que tanto PATH como CLASSPATH parecen estar configurados correctamente).

2) Me gustaría poder poner todos mis archivos jar en un solo directorio e incluir ese directorio en mi ruta (en lugar de incluir cada contenedor individualmente). ¿Cómo puedo hacer eso?

Gracias por adelantado.

EDITAR 1 -> Aquí está mi línea de comando

andy@laptop:~$ export CLASSPATH=$CLASSPATH:/home/andy/research/software/weka/weka.jar andy@laptop:~$ echo $CLASSPATH :/home/andy/research/software/weka/weka.jar andy@laptop:~$ java -jar weka.jar Unable to access jarfile weka.jar andy@laptop:~$ java weka.jar Exception in thread "main" java.lang.NoClassDefFoundError: weka/jar Caused by: java.lang.ClassNotFoundException: weka.jar at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: weka.jar. Program will exit. andy@laptop:~$

EDITAR 2 -> Cambié la variable PATH para apuntar al directorio ''/ home / andy / research / software / weka /'' y aún me aparece ''incapaz de acceder al error jarfile''


La imposibilidad de acceder a * .jar significa que java no puede encontrar este archivo jar. Debe ejecutar este comando (java -jar weka.jar) desde la carpeta donde se encuentra su jar, o corregir su variable PATH. Debe señalar a la CARPETA donde se coloca el contenedor, no el archivo jar directamente.


La opción 1) -jar de Java desactiva el uso de CLASSPATH. Por favor, eche un vistazo a Establecer el CLASSPATH de Weka

2) Las entradas de ruta de clase pueden contener el carácter comodín de nombre base , que se considera equivalente a especificar una lista de todos los archivos en el directorio con la extensión .jar o .JAR. Por ejemplo, la entrada de ruta de clase foo / especifica todos los archivos JAR en el directorio llamado foo. Una entrada classpath que consiste simplemente en * se expande a una lista de todos los archivos jar en el directorio actual. Eche un vistazo a Establecer la ruta de clase | Comprender los comodines de la ruta de clase


Usted no ejecuta como

java -jar weka.jar

En cambio, le das el nombre de una de las clases DENTRO jar.

un ejemplo simple sin establecer classpath:

java -jar /home/andy/research/software/weka/weka.jar weka.core.SystemInfo

un ejemplo simple usando set classpath:

export CLASSPATH=$CLASPATH:/home/andy/research/software/weka/weka.jar java weka.core.SystemInfo

Ejemplo más complicado:

export WEKA_HOME=/home/andy/research/software/weka/ export CLASSPATH=$CLASPATH:$WEKA_HOME/weka.jar export HEAP_OPTION=-Xms4096m -Xmx8192m export JAVA_COMMAND=java $HEAP_OPTION $JAVA_COMMAND weka.core.SystemInfo


asumiendo que estás en la misma carpeta que weka.jar todo lo que necesitas es ./ antes del nombre del jar

java -jar ./weka.jar weka.core.SystemInfo