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