Título: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 01:34 am
wenas gente! no consigo importarla.. la cuestión es que quiero en la linea de comandos ejecutar ... me salta... C:\Users\Juanma\Desktop>javac aplicacionCLI.java aplicacionCLI.java:6: error: package org.apache.commons.cli does not exist import org.apache.commons.cli.*; ... 8 errors Alquien me podría explicar QUE TENGO QUE HACER PARA IMPLEMENTAR LA LIBRERIA COMMONS CLI BIEN PARA YO PODER EJECUTAR MIS APLICACIONES DESDE DONDE YO QUIERA????
Título: Re: Como importar la libreria Apache Commons cli en el classpath
Publicado por: egyware en 5 Noviembre 2013, 03:17 am
C:\Users\User>javac Usage: javac <options> <source files> where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging info -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -deprecation Output source locations where deprecated APIs are u sed -classpath <path> Specify where to find user class files and annotati on processors -cp <path> Specify where to find user class files and annotati on processors -sourcepath <path> Specify where to find input source files -bootclasspath <path> Override location of bootstrap class files -extdirs <dirs> Override location of installed extensions -endorseddirs <dirs> Override location of endorsed standards path -proc:{none,only} Control whether annotation processing and/or compil ation is done. -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process -processorpath <path> Specify where to find annotation processors -d <directory> Specify where to place generated class files -s <directory> Specify where to place generated source files -implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files -encoding <encoding> Specify character encoding used by source files -source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version -version Version information -help Print a synopsis of standard options -Akey[=value] Options to pass to annotation processors -X Print a synopsis of nonstandard options -J<flag> Pass <flag> directly to the runtime system -Werror Terminate compilation if warnings occur @<filename> Read options and filenames from file Ojo con javac compilas... javac *.java -cp path/to/classpath;path/to/library.jar Espero que te sirva. Saludos!
Título: Re: Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 13:20 pm
No lo he solucionado.. lo que quiero es añadir commons cli al classpath para que me pueda complicar mi clase utilidadcli.java
AYUDA!
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: egyware en 5 Noviembre 2013, 13:31 pm
Bueno... primero que nada debes tener commons cli descargado, no crees? http://commons.apache.org/proper/commons-cli/ http://commons.apache.org/proper/commons-cli/download_cli.cgi
y luego para compilar debes hacer esto.
javac TuClaseConCli.java -cp commons-cli-1.2/commons-cli-1.2.jar
y luego para ejecutar haces lo mismo java TuClaseConCli -cp commons-cli-1.2/commons-cli-1.2.jar
¿Te sirve?
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 16:57 pm
Ok, me compila bien, pero a la hora de usar java TuClaseConCli -cp commons-cli-1.2/commons-cli-1.2.jar [/b] ME DICE QUE NO ENCUENTRA LA CLASE PRINCIPAL... QUE ASCO JEJEJEJ
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: egyware en 5 Noviembre 2013, 17:53 pm
Ojo que el nombre "TuClaseConCli" es solo un ejemplo. Recuerda para ejecutar una clase debes usar "java" y debes indicarle cual es la clase que contiene el metodo main. /* File: TuClase.java */ public class TuClase { //debe tener este metodo, poder invocarlo desde el comando java public static void main (String args []) { //tu codigo... System. out. println("Tu codigo"); } }
C:\ java TuClase Saludos!
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 18:41 pm
El codigo que uso es el siguiente.. javac CalculadoraCLI.java -cp jar/commons-cli-1.2.jar 2) Me genera el .class correctamente 3) ahora... javac CalculadoraCLI.java -cp jar/commons-cli-1.2.jar 4) No se encuentra la clase CalculadoraCLI.java 5) tiene un metodo main 6) no se que hacer ya..
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: egyware en 5 Noviembre 2013, 18:46 pm
Bueno postea tu clase y el código del error completo, para observar el problema.
PS: Ojo!!!! para invocar o ejecutar una clase solo debes hacer "java CalculadoraCLI" sin .java ni .class
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 18:53 pm
C:\Users\Juanma\Desktop>java CalculadoraCLI Error: no se ha encontrado o cargado la clase principal CalculadoraCLI Él codigo es un ejemplo que vi en internet para ver si podia ejecutarlo en la linea de comandos import org.apache.commons.cli.*; import java.io.OutputStream; /** * Ejemplos del uso de la librería "Apache Commons CLI" * @author Carlos García. Autentia. */ public class CalculadoraCLI { /** * -ip address [-port puerto] [err|console] [-help | -h] */ public static void main(String[] args) { final int DEF_PORT = 60001; // Puerto por defecto int port = 0; String ip = null; OutputStream output = null; CommandLineParser parser = null; CommandLine cmdLine = null; /////////////////////////////////////////////////////////////////////// // Fase 1: Configuramos las opciones de validación de entrada. /////////////////////////////////////////////////////////////////////// Options options = new Options(); options.addOption("ip", true, "IP de destino"); options.addOption("port", true, "Puerto destino"); options.addOption("h", "help", false, "Imprime el mensaje de ayuda"); // No pueden aparecen las dos opciones simultáneamente. OptionGroup group = new OptionGroup(); group.addOption(new Option("err", "Salida estándar de errores")); group.addOption(new Option("console", "Salida estándar")); options.addOptionGroup(group); try { /////////////////////////////////////////////////////////////////////// // Fase 2: Parseamos la entrada con la configuración establecida /////////////////////////////////////////////////////////////////////// parser = new BasicParser(); cmdLine = parser.parse(options, args); /////////////////////////////////////////////////////////////////////// // Fase 3: Analizamos los resultados y realizamos las tareas pertinentes /////////////////////////////////////////////////////////////////////// // Si está la opcion de ayuda, la imprimimos y salimos. if (cmdLine.hasOption("h")){ // No hace falta preguntar por el parámetro "help". Ambos son sinónimos new HelpFormatter().printHelp(CalculadoraCLI.class.getCanonicalName(), options ); return; } // Si el usuario ha especificado el puerto lo leemos if (cmdLine.hasOption("port")){ port = Integer.parseInt( cmdLine.getOptionValue("port") ); } else { port = DEF_PORT; } // Leemos la dirección IP. Sino existe generamos un error pues es un parámetro requerido. ip = cmdLine.getOptionValue("ip"); if (ip == null){ throw new org.apache.commons.cli.ParseException("La direccion IP es requerida"); } if (cmdLine.hasOption("console")){ output = System.out; } else if (cmdLine.hasOption("err")){ output = System.err; } else { output = null; } // .............................................................. // Aquí irían las tareas que tuviera que realizar la aplicación // .............................................................. System.out.println("OK"); } catch (org.apache.commons.cli.ParseException ex){ System.out.println(ex.getMessage()); new HelpFormatter().printHelp(CalculadoraCLI.class.getCanonicalName(), options ); // Error, imprimimos la ayuda } catch (java.lang.NumberFormatException ex){ new HelpFormatter().printHelp(CalculadoraCLI.class.getCanonicalName(), options ); // Error, imprimimos la ayuda } } }
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 19:06 pm
¿ Puede ser por mis variables Path y classpath? he creado uno con un main de imprima hola y ese si me deja , pero... C:\Users\Juanma\Desktop>java holita hola
C:\Users\Juanma\Desktop>java CalculadoraCLI -cp jar/commons-cli-1.2.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cl i/ParseException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseExcepti on at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 6 more
C:\Users\Juanma\Desktop>
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: egyware en 5 Noviembre 2013, 19:12 pm
¡Encontré el problema!
Y pido mil disculpas, fue un error mio que pase por alto
java -cp commons-cli-1.2.jar;. CalculadoraCLI
En la configuración del classpath debes especificar buscar en el directorio actual (el punto), ya que solo buscaba en la biblioteca de commons-cli.
Ups!!
PS: Otra cosa, el orden influye también.
Java [Opciones] MainClass Si lo dejas al revés te dará error también.
Saludos!!
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: Juanma91 en 5 Noviembre 2013, 19:19 pm
Por fin!! Muchas gracias amigo! Me has "salvado" un poco la vida, llevaba dias tras esto sin poder sacarle punta ;-)
Título: Re: AYUDA! Como importar la libreria Apache Commons cli en el classpath
Publicado por: ~ Yoya ~ en 6 Noviembre 2013, 16:12 pm
Lo ideal es utilizar el archivo MANIFEST.MF, hay indicas la MainClass y también el classpath de las librerías, de forma que no tienes que especificar la clase principal ni el classpath a la hora de ejecutarlo.
Saludos.
|