AYUDA! Como importar la libreria Apache Commons cli en el classpath

Iniciado por Juanma91, 5 Noviembre 2013, 01:34 AM

0 Miembros y 2 Visitantes están viendo este tema.

Juanma91

wenas gente! no consigo importarla.. la cuestión es que quiero en la linea de comandos ejecutar ...

javac aplicacionCLI

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

egyware

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!

Juanma91

No lo he solucionado.. lo que quiero es añadir commons cli al classpath para que me pueda complicar mi clase utilidadcli.java

AYUDA!

egyware

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?

Juanma91

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

egyware

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

Código (java) [Seleccionar]

/* 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!

Juanma91

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

egyware

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

Juanma91

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

Juanma91

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