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.