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????
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!
No lo he solucionado.. lo que quiero es añadir commons cli al classpath para que me pueda complicar mi clase utilidadcli.java
AYUDA!
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?
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
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!
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..
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
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
}
}
}
¿ 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>
¡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!!
Por fin!! Muchas gracias amigo! Me has "salvado" un poco la vida, llevaba dias tras esto sin poder sacarle punta ;-)
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.