calculadora en ubuntu y windows netbeans

Iniciado por jelsir, 30 Marzo 2014, 06:32 AM

0 Miembros y 1 Visitante están viendo este tema.

jelsir

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());
}
}
(`'·.¸(`'·.¸ ¸.·'´)¸.·'´)
«´¨`·...[JeLsIr] «
(¸.·'´(¸.·'´ `'·.¸)`'·.¸)

Mitsu

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 (=java) [Seleccionar]

String osName = System.getProperty("os.name").toLowerCase();

if(osName.indexOf("win") >= 0) {
// codigo para windows
}

else if(osName.indexOf("mac") >= 0) {
// codigo para Mac
}

else if(osName.indexOf("nux") >= 0) {
// codigo para Linux
}


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.

jelsir

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

(`'·.¸(`'·.¸ ¸.·'´)¸.·'´)
«´¨`·...[JeLsIr] «
(¸.·'´(¸.·'´ `'·.¸)`'·.¸)

engel lex

bueno, ahí está la solución, el detecta el sistema operativo y ejecutas el codigo adecuado...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Mitsu

¿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 (=java) [Seleccionar]

String osName = System.getProperty("os.name").toLowerCase();
Runtime obj = Runtime.getRuntime();

if(osName.indexOf("win") >= 0) {
obj.exec("C:\\WINDOWS\\system32\\CALC.EXE");
}

else if(osName.indexOf("mac") >= 0) {
// codigo para Mac
}

else if(osName.indexOf("nux") >= 0) {
obj.exec("/usr/bin/gnome-calculator")
}


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

Código (=java) [Seleccionar]

System.getenv("XDG_CURRENT_DESKTOP"); // retorna Gnome, KDE, etc




Saludos.

jelsir

muy amable y disculpa por las molestias ocasionados ya quedo al 100% funcionando!!!!!

nuevamente.. gracias
(`'·.¸(`'·.¸ ¸.·'´)¸.·'´)
«´¨`·...[JeLsIr] «
(¸.·'´(¸.·'´ `'·.¸)`'·.¸)