Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Juanma91

#21
Java / Duda Apache Commons CLI
7 Noviembre 2013, 23:07 PM
Hola compañeros, tengo una duda que no sé como resolverla:

usage: Vista.CalculadoraCLIVista
-resta                  Calcula la resta dos operandos
-suma             Calcula la suma dos operandosl



¿ Cómo puedo "decirle" que el args[0] equivale a resta,suma..etc?

Lo estoy haciendo con el patron MVC y el código de la vista lo tengo así , pero no estoy muy convencido que este bien..

public void realizarOperacion(String[] args,double x, double y) {
       
        // para poder pasarle el options al parser
        Options options = mostrarOpciones();

        CommandLineParser parser = new BasicParser();
        CommandLine cmd = null;
        try {
            cmd = parser.parse(options, args);
        } catch (ParseException ex) {
            Logger.getLogger(CalculadoraCLIVista.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (cmd == null) {
            System.err.println("No se cargo bien el parseador de la linea de comandos");

            System.exit(-1);
        }

        if (cmd.hasOption("h") || cmd.getOptions().length == 0) {
            new HelpFormatter().printHelp(CalculadoraCLIVista.class.getCanonicalName(), options);
            return;
        }

        if (cmd.hasOption("suma")) {
            // leer los dos argumentos , convertirlos a double y realizar operacion.
           
        // "x" seria el primer operando que se le pasa," y" el segundo.
            x = Double.parseDouble(args[1]);
            y = Double.parseDouble(args[2]);
            controlador.sumar(x, y);
        }

}

  .. de tal manera que yo ponga  sumar 1 2 y la línea de comandos me devuelva 3.. :S
#22
Por fin!! Muchas gracias amigo! Me has "salvado" un poco la vida, llevaba dias tras esto sin poder sacarle punta  ;-)
#23
¿ 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>
#24
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 
        } 
    } 
#25
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..
#26
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
#27
No lo he solucionado.. lo que quiero es añadir commons cli al classpath para que me pueda complicar mi clase utilidadcli.java

AYUDA!
#28
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????
#29
1º La base de datos en sql compact

2º no la tengo importada en el proyecto

   Public Sub add(ByVal juguete As Juguete) Implements IJugueteDAO.add
       ' Creo acceso a db a través de EF
       Dim ef = New juguetes1Entities()

       ' Creo juguete en la base de datos
       Dim jugueteEf = ef.Juguetes.CreateObject()
       ' Le asigno los valores de mi modelo
       jugueteEf.EdadMinima = juguete.EdadMinima
       jugueteEf.Nombre = juguete.Nombre
       jugueteEf.Precio = juguete.Precio
       ' Guardo los cambios en la db
       ef.SaveChanges()
   End Sub



borrar...


Public Sub remove(ByVal juguete As Juguete) Implements IJugueteDAO.remove
       Dim ef = New juguetes1Entities()

       ' Busco en la db el juguete por el ID
       Dim jugueteEf = From s In ef.Juguetes Where s.Id = juguete.Id

       ' Tras eso, lo borro
       ef.Juguetes.DeleteObject(jugueteEf)
       ' Creo que en el delete save es opcional...
       ef.SaveChanges()
   End Sub



actualizar....


   Public Function Update(ByVal juguete As Juguete) Implements IJugueteDAO.update
       Try
           Dim ef = New juguetes1Entities
           Dim productoEF = (From s In ef.Juguetes Where s.Id = juguete.Id Select s).First()
           productoEF.Nombre = juguete.Nombre
           productoEF.EdadMinima = juguete.EdadMinima
           productoEF.Precio = juguete.Precio

           ef.SaveChanges()
           Return True
       Catch
           Return False
       End Try
   End Function




en el form....

Class MainWindow

   Dim juguete As Juguete

   Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded


       For Each j In CatalogoJuguetes.Instancia.getAll
           ComboBox1.Items.Add(j)
       Next
   End Sub

 

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click

       Dim precio = Double.Parse(TextBox1.Text.ToString)
       Dim nombre = TextBox2.Text.ToString
       Dim edad = TextBox3.Text.ToString
       Dim id = Integer.Parse(TextBox4.Text.ToString)

       juguete = New Juguete(precio, edad, nombre, id)
       CatalogoJuguetes.Instancia.add(juguete)
       ComboBox1.Items.Add(juguete)

   End Sub

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click
       ComboBox1.Items.Remove(juguete)


           CatalogoJuguetes.Instancia.remove(juguete)

   End Sub



AL AÑADIR ME LO AÑADE AL COMBOBOX Y SUPUESTAMENTE EN LA BASE DE DATOS PERO CUANDO VUELVE A EJECUTARLO, ESTE NO ME APARECE, BORRAR ME SALTA UN InvalidCastException Y LA VERDAD NO SÉ SOLUCIONARLO Y EL TERCERO QUERRIA ACTUALIZARLO .. SI PUEDEN AYUDARME GRACIAS
#30
Alguien puede ayudarme??????????????????????????????????????????????????