Ejecutar programa Java

Al crear un sencillo programa en Java(en Windows o Linux) es sencillo ejecutarlo tú mismo ('java programa' en consola), pero si lo quieres enseñar a algún amigo le tienes que ir explicando lo de las variables de entorno, el classpath (en el caso de no tener un .jar), etc... Si el nivel del usuario es normal-bajo, a veces cuesta enseñarles un programa.

Hay alguna forma más sencilla de ejecutar un programa por consola que la habitual? Sin tener que cambiar la ruta del JRE y todo eso...

No sé si me explico... ^^U
Lo más facil es que lo metas todo en un jar.
Luego que tu amigo instale el jre que es lo mínimo recomendable para ejecutar código java.
Simplemente en windows sobre el archivo jar, pulsar botón derecho del ratón:
Abrir con > Java(TM) 2...
rare escribió:Lo más facil es que lo metas todo en un jar.
Luego que tu amigo instale el jre que es lo mínimo recomendable para ejecutar código java.
Simplemente en windows sobre el archivo jar, pulsar botón derecho del ratón:
Abrir con > Java(TM) 2...
Y no hay que tocar nada de variables de entorno?
No, no tienes que tocar nada.
Pues no me funciona :?
Hago lo que dices pero no se ejecuta nada.
¿Qué usas para programar java?
¿El jar cómo lo creas?
rare escribió:¿Qué usas para programar java?
¿El jar cómo lo creas?



Uso el JDK 6.

El programa que prové era uno sencillo, de 2 clases y un paquete externo (javabook2).

Usé esta web como ayuda: http://www.chuidiang.com/chuwiki/index.php?title=Ficheros_jar#Los_ficheros_jar

Lo compilé en Linux, de la siguiente forma (escribo de memoria):

jar cmf manifiesto.txt fichero.jar javabook2.jar clase1.class clase2.class

Y el manifiesto:
Main-Class: clase1
Class-Path: javabook2.jar

Pero vamos, no creo que esté mal creado el jar porque en Linux me lo ejecutaba. Algo curioso es que en Linux, usando lo de Abrir con, tampoco funcionaba :O
Si funciona el jar entonces está bien creado.

Para los problemas con la opción abrir con..., pues no se cual será la razón por la que no va. Puedes intertar probando con los ejemplos del jdk
...\jdk1.5.xxxx\demo\jfc\Java2D\Java2Demo.jar

Otro opción que tienes es crear un bat con el texto de ejecución del jar.
java -jar programa.jar
rare escribió:Para los problemas con la opción abrir con..., pues no se cual será la razón por la que no va. Puedes intertar probando con los ejemplos del jdk
...\jdk1.5.xxxx\demo\jfc\Java2D\Java2Demo.jar


Qué raro, ése archivo sí lo ejecuta :S
Quizas lo mejor es que el jar lo haga otro por ti.

Te recomiendo que programes usando eclipse:
Eclipse 3.x en http://www.eclipse.org/

Netbeans esta igual de bien pero como yo uso eclipse te lo explico con el:
Una vez que tengas el programa hecho sobre la ventana de exploración de paquetes situate en el proyecto que quieras.
Das al botón derecho y eliges exportar > archivo jar > siguiente > aqui seleciona lo que quieres que se meta en el jar (basicamente puedes quitar los archivos fuente y decir que lo comprima) > siguiente > siguiente > en esta pantalla es importante que indiques la clase principal para que es jar pueda ejecutarse > finalizar
Y con esto ya no debería darte problemas.
Lo he probado con Eclipse (en Linux) y ni en Linux ni Windows se ejecuta Oooh
Y eso que era un simple Hello World Oooh

Te dejo adjunto el jar del Hello World a ver si puedes probar si te va.

Clica
Definitivamente el jar esta bien y funciona.
Si abres el administrador de tareas y ejecutar el jar con abrir con... veras un java o javaw que se ejecuta para el jar, el problema es que por pantalla no se ve nada. Quizas por razones de seguridad no abre la ventana de linea de comandos. El caso es que lo ejecuta y funciona correctamente.
Puedes probar otras variantes del hola mundo y veras que te funciona.

Variante grafica del hola mundo, con swing no tiene problemas para que se visualice:

import javax.swing.JOptionPane;

public class Hello {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "Hola, mundo.", "Hola, mundo.", JOptionPane.WARNING_MESSAGE);
}
}


Variante de archivo de texto del hola mundo, al igual que el original no abre ventana de dos y no se ve nada, pero el archivo de texto que crea es la prueba de que funciona:

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;

public class Hello {
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("texto.txt");
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter salida = new PrintWriter(bw);
salida.println("Hola, mundo.");
salida.close();
} catch(java.io.IOException ioex) { }
}
}

A la vista de esto, la opción más factible es que para los programas que usen la linea de comandos para mostrar mensajes les adjuntes un bat, ya que este, para poder ejecutarse previamente si abre una ventana de linea de comandos y si se puede ver y para los que usen awt o swing no necesitas hacer nada especial.
11 respuestas