Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jelsir en 30 Marzo 2014, 06:32 am



Título: calculadora en ubuntu y windows netbeans
Publicado por: jelsir en 30 Marzo 2014, 06:32 am
hola buen día

estoy con una aplicación en donde sea compatible con windows y ubuntu y que ejecute la aplicación calculadora si esta en ubuntu que ejecute su calculadora y que haga lo mismo en windows aquí les dejo el código pero me sale un error cuando lo ejecuto en las plataformas(windows o ubuntu) ayuda... gracias

}

private void JMItCalculadoraActionPerformed(java.awt.event.ActionEvent evt) {
try
{
Runtime obj = Runtime.getRuntime();
obj.exec("/usr/bin/gnome-calculator");
obj.exec("C:\\WINDOWS\\system32\\CALC.EXE");

}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e.getMessage());
}
}


Título: Re: calculadora en ubuntu y windows netbeans
Publicado por: Mitsu en 30 Marzo 2014, 20:27 pm
Obvio que te lanza una excepción, acostúmbrate a especificar qué error porque en Java hay muchas exepciones y errores (los errores siempre te quiebran la aplicación), por que no pones un condicional para ejecutar si es determinada plataforma, la ruta de la calculadora.

Para saber la plataforma (SO) sobre la cual está corriendo Java, se hace uso del método getProperty("os.name") de la clase System. Ejemplo:

Código
  1. String osName = System.getProperty("os.name").toLowerCase();
  2.  
  3. if(osName.indexOf("win") >= 0) {
  4. // codigo para windows
  5. }
  6.  
  7. else if(osName.indexOf("mac") >= 0) {
  8. // codigo para Mac
  9. }
  10.  
  11. else if(osName.indexOf("nux") >= 0) {
  12. // codigo para Linux
  13. }

El algoritmo es sencillo, indexOf devuelve el índice del comienzo del parámetro que le enviamos (una subcadena String o un character), caso contrario devuelve -1. Por ésta razón, colocamos >=0 ya que si el valor de retorno es mayor o igual a cero quiere decir que la subcadena o character existe dentro de la cadena.


Título: Re: calculadora en ubuntu y windows netbeans
Publicado por: jelsir en 31 Marzo 2014, 04:44 am
hola buenas noches, disculpa por no ser mas especifico, estoy trabajando en un entorno grafico, dentro del menu de mi aplicacion tengo la opcion calculadora al trabajar con ubuntu si ejecuta la calculadora de ubuntu sin problemas pero tambien me sale el siguiente mensaje "cannot run program C:\WINDOWS\system32\CALC.EXE", ahora cuando trabajo con windows si ejecuta su calculadora pero tambien me manda un mensaje de error que no puede ejecutar la calculadora de ubuntu lo que quiero evitar son esos mensaje, lo unico que quiero que se ejecute la calculadora de cad plataforma ya sea windows o ubuntu sin todos esos detalles...

gracias por responder...



Título: Re: calculadora en ubuntu y windows netbeans
Publicado por: engel lex en 31 Marzo 2014, 05:05 am
bueno, ahí está la solución, el detecta el sistema operativo y ejecutas el codigo adecuado...


Título: Re: calculadora en ubuntu y windows netbeans
Publicado por: Mitsu en 31 Marzo 2014, 15:22 pm
¿Te has leído por lo menos la mitad de lo que puse? ¿Cómo quieres que no te lance una excepción (no error) si en cada plataforma intentas ejecutar las dos calculadoras en vez de una sola? Mira bien el código que te puse, primero se detecta la plataforma sobre la cual está corriendo la JVM y de acuerdo a eso se ejecuta la calculadora del sistema operativo residente.

¿Pero que esperan que les hagan todo?

Código
  1. String osName = System.getProperty("os.name").toLowerCase();
  2. Runtime obj = Runtime.getRuntime();
  3.  
  4. if(osName.indexOf("win") >= 0) {
  5. obj.exec("C:\\WINDOWS\\system32\\CALC.EXE");
  6. }
  7.  
  8. else if(osName.indexOf("mac") >= 0) {
  9. // codigo para Mac
  10. }
  11.  
  12. else if(osName.indexOf("nux") >= 0) {
  13. obj.exec("/usr/bin/gnome-calculator")
  14. }

Otra cosa, puedes detectar también el entorno de escritorio con el método getenv:

Código
  1. System.getenv("XDG_CURRENT_DESKTOP"); // retorna Gnome, KDE, etc



Saludos.


Título: Re: calculadora en ubuntu y windows netbeans
Publicado por: jelsir en 7 Abril 2014, 03:12 am
muy amable y disculpa por las molestias ocasionados ya quedo al 100% funcionando!!!!!

nuevamente.. gracias