Hola a todos.
Estoy aprendiendo un poco de Java, quisiera saber como ejecutar un programa desde la consola de comandos.
¿Cual es la sintaxis o el programa que me permite eso?
Yo normalmente ejecuto los codigos desde el "runner" de Eclipse.
Estoy en Ubuntu 8.04 - Hardy Heron.
Hola Leo.
Lo primero que debes tener en cuenta es que debes tener instalado el JRE, que puedes buscar desde tus repositorios. Una vez lo tengas, puedes ejecutar tus programas de esta manera:
Para un archivo llamado Programa.class:
java Programa
Para un archivo JAR:
java -jar Programa.jar
Un saludo!
Hola Casidiablo... ;D
Tambien debes tener compilado tu jar para poder ejecutar programa, para eso en el eclipse hay un asistente que exporta los jar, es facil de usar.
Es que ese es el probema, creo ya tener todo instalado:
leo@lein:~/workspace/java/holamundo$ sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
sun-java6-jre ya está en su versión más reciente.
sun-java6-plugin ya está en su versión más reciente.
sun-java6-fonts ya está en su versión más reciente.
Se instalaron de forma automática los siguientes paquetes y ya no son necesarios.
lesstif2 libgeomview-1.9.4 winbind
Utilice «apt-get autoremove» para eliminarlos.
0 actualizados, 0 se instalarán, 0 para eliminar y 27 no actualizados.
leo@lein:~/workspace/java/holamundo$
Ahora, este es mi código, "holamundo.java":
leo@lein:~/workspace/java/holamundo$ ls
holamundo.class holamundo.java
leo@lein:~/workspace/java/holamundo$ cat holamundo.java
package holamundo;
import java.util.*;
public class holamundo
{
public static void main(String[] args)
{
System.out.println("Hello!\n");
}
}
leo@lein:~/workspace/java/holamundo$
Al intentar correrlo:
leo@lein:~/workspace/java/holamundo$ java holamundo.java
Exception in thread "main" java.lang.NoClassDefFoundError: holamundo/java
Caused by: java.lang.ClassNotFoundException: holamundo.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: holamundo.java. Program will exit.
leo@lein:~/workspace/java/holamundo$
¿En que estoy mal?
Eclipse me corre bien el programa.
Sii estas mal
compila primero
javac Hola.java
y luego
java Hola
Adios
Tuve que instalarlo, no lo tenía.
Hola
Citar
Tuve que instalarlo, no lo tenía.
A que te refieres??
En tu código mire que tienes un
package holamundo;
No sé si sabes lo que hace esta linea, pues lo unico que hace es guardar tu .class en una carpeta ( con el nombre holamundo) que se crea en ese mismo directorio. Esto lo hace ejecutandolo de un editor(Jcreator, netbeans, eclipse, etc). Si lo haces desde linea de comandos no te genera la carpeta sino que el .class lo crea en ese mismo directorio donde se encuentra tu .java
No estoy muy seguro, pero si
ejecutas el programa desde consola tendria que aparecer un error.
Te recomiendo que para no estes abriendo tu consola cada vez que quieras ejecutar un programa, te crees un
ejecutar.batEl cual contendrá lo siguiente:
javac holamundo.java
@pause
java holamundo
@pause
Saludos
Cita de: Darhius en 28 Agosto 2009, 07:57 AM
Hola
Citar
Tuve que instalarlo, no lo tenía.
A que te refieres??
En tu código mire que tienes un
package holamundo;
No sé si sabes lo que hace esta linea, pues lo unico que hace es guardar tu .class en una carpeta ( con el nombre holamundo) que se crea en ese mismo directorio. Esto lo hace ejecutandolo de un editor(Jcreator, netbeans, eclipse, etc). Si lo haces desde linea de comandos no te genera la carpeta sino que el .class lo crea en ese mismo directorio donde se encuentra tu .java
No estoy muy seguro, pero si ejecutas el programa desde consola tendria que aparecer un error.
Te recomiendo que para no estes abriendo tu consola cada vez que quieras ejecutar un programa, te crees un ejecutar.bat
El cual contendrá lo siguiente:
javac holamundo.java
@pause
java holamundo
@pause
Saludos
Me refiero a que tuve que instalar
gcj-4.1 para poder correr los programas.
Y sí, tengo el siguiente código en eclipse:
package holamundo;
public class holamundo
{
public static void main(String[] args)
{
System.out.println("Adios");
}
}
Si le quito el "package holamundo" no corre, pero desde la línea de comandos sí:
leo@lein:~/workspace/java/holamundo$ cat holamundo.java
public class holamundo
{
public static void main(String[] args)
{
System.out.println("Adios");
}
}leo@lein:~/workspace/java/holamundo$ javac holamundo.java
leo@lein:~/workspace/java/holamundo$ java holamundo
Adios
leo@lein:~/workspace/java/holamundo$
Y viceversa, si tengo el "package holamundo" y lo compilo desde la línea de comandos, no funciona:
leo@lein:~/workspace/java/holamundo$ cat holamundo.java
package holamundo;
public class holamundo
{
public static void main(String[] args)
{
System.out.println("Adios");
}
}leo@lein:~/workspace/java/holamundo$ javac holamundo.java
leo@lein:~/workspace/java/holamundo$ java holamundo
Exception in thread "main" java.lang.NoClassDefFoundError: holamundo (wrong name: holamundo/holamundo)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: holamundo. Program will exit.
leo@lein:~/workspace/java/holamundo$
¿Como hacer para que funcione en las dos?
cuando usas package es porque lo estas metiendo dentro de una capeta (o similar) tu clase, eso significa que debes estar en un nivel superior.
Esto nunca lo he hecho porque para clases chicas como la que mensionaste omito el package y me queda guardado en el paquete por defecto, pero por teoria deberia funcionar:
#java holamundo/holamundo
La clase holamundo debe estar guardada en la carpeta holamundo
Espero que me hayas entendido
Adios