Utilizando Eclipse he creado un SWT programa Hola Mundo. Yo era capaz de ejecutar este programa desde Eclipse y funcionó bien.
En el «/home/minombre/workspace/HelloWorldSWT» he encontrado dos archivos: HelloWorldSWT.java y HelloWorldSWT.class. Yo quería ejecutar el programa desde la línea de comandos. Primero traté de tipo «java Holamundo» y recibí el siguiente mensaje de error:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
at gnu.java.lang.MainThread.run(libgcj.so.90)
Caused by: java.lang.ClassNotFoundException: HelloWorld not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.90)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
at java.lang.ClassLoader.loadClass(libgcj.so.90)
at java.lang.ClassLoader.loadClass(libgcj.so.90)
at gnu.java.lang.MainThread.run(libgcj.so.90)
También he probado este «java -cp /home/roman/espacio de trabajo/HelloWorld.HelloWorld». Como el resultado que obtuve el siguiente mensaje de error:
Exception in thread "main" java.lang.NoClassDefFoundError: loaded class HelloWorld.HelloWorld was in fact named HelloWorld
at java.lang.VMClassLoader.defineClass(libgcj.so.90)
at java.lang.ClassLoader.defineClass(libgcj.so.90)
at java.security.SecureClassLoader.defineClass(libgcj.so.90)
at java.net.URLClassLoader.findClass(libgcj.so.90)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
at java.lang.ClassLoader.loadClass(libgcj.so.90)
at java.lang.ClassLoader.loadClass(libgcj.so.90)
at gnu.java.lang.MainThread.run(libgcj.so.90)
¿Alguien sabe qué estoy haciendo mal? Gracias de antemano por cualquier ayuda.
Ir a la perspectiva Debug, y seleccione el programa que acabas de correr (donde dice Terminado, salga de valor… en la ficha Depurar) haga clic Derecho y elija Propiedades, allí se puede ver toda la línea de comando que fue lanzada por el eclipse.
Puede ejecutar el mismo comando en el mismo directorio de eclipse hizo (ver en Ejecutar las Configuraciones, los Argumentos de directorio de Trabajo) y se va a trabajar.
Debe agregar el directorio donde el eclipse es el almacenamiento de la HelloWorldSWT.class archivo en la ruta de clases. Se define cuando se crea el proyecto, como «bin», «construir» o «clases». Compruebe las propiedades del proyecto o de la búsqueda de la HelloWorldSWT.class archivo.
Suponiendo que es el
build
directorio dentro de la HelloWorldSWT área de trabajo y que su clase está en ningún paquete (paquete predeterminado), el comando debe ser:o simplemente cambiar a ese directorio y uso:
EDICIÓN:
El
-cp .
significa que sólo el directorio real que se utiliza para encontrar los archivos de clase. También debe agregar todas las bibliotecas (Frascos u otros directorios) que utiliza el programa (databse, SWT, …).Para más detalles se puede echar un vistazo a la documentación: Como las Clases se Encuentran, Configuración de la ruta de clases y java comand
CLASSPATH
variable de entorno o la-cp
argumento; por ejemplo:java -cp .:lib/somelib.jar:... HelloWorldSWT
. He editado mi respuesta añadir un enlace a la documentación (estoy seguro de que el CLASSPATH pregunta es contestada en algún otro lugar stackoverflow.com)Hago un poco de solución a fin de aprovechar plenamente el Eclipse de conveniencia. A continuación es lo que he encontrado, y funcionó bien para mí. Esperamos que ayude a:

Me parece que usted no tiene una clase llamada HelloWorldSWT`, sino más bien una clase denominada
HelloWorldSWT
en un paquete denominadoHelloWorldSWT
(puede confirmar esto de ir en la primera línea deHellowWorldSWT.java
, donde encontrarápackage HelloWorldSWT;
Si es así, ir en el directorio principal y el tipo
java HelloWorldSWT.HelloWorldSWT
Esto iba a funcionar.
Es posible que no carga la SWT biblioteca correctamente, y como resultado de su clase no se puede cargar.
La SWT biblioteca es parte de los frascos que ya están cargados al ejecutar Eclipse pero no se cargan en un parámetro de línea de comandos. No lo modifica su ruta de clase en consecuencia?
Aquí es un viejo artículo sobre cómo hacer este tipo de cosas en las versiones anteriores de Eclipse
http://www.ibm.com/developerworks/opensource/library/os-ecgui1/
Usted va a necesitar diferentes frascos de hoy en día con la última versión de fo Eclipse. Podría incluso llegar a un solo frasco.
Retirar el SWT FAQ; al menos para Mac de Carbono, puede utilizar un solo frasco, yo apuesto a que usted puede hacer que para otras plataformas.
También, no estoy 100% seguro de que usted puede ejecutar Eclipse bajo openJDK, que parece ser el caso en su plataforma.
Este es el problema, que es causada debido a la JVM no es capaz de encontrar la clase HelloWorld como tiene el nombre de la clase como HelloWorldSWT con un método main en ella. pruebe con
java HelloWorldSWT
No ha establecido classpath correctamente.
Creo que por lo general es más conveniente tener el IDE construye un jar-file con todos los no-jre libs incluido y lo ejecuta desde la línea de comandos.
java -jar myprogram.jar
Que realmente es una buena pregunta, y la implementación de aplicaciones en java es realmente un arte en sí mismo. Tanto de la compilación y la ejecución es – si no es complicado – al menos engorroso cuando se realiza a mano. Pero Eclipse y otras herramientas como Netbeans puede ayudarle a realizar estas tareas de una manera fácil, e incluso el paquete de su programa para usted de modo que otras personas que no utilizan estas herramientas también se pueden ejecutar los programas fácilmente.
Si quieres ejecutar el programa con argumentos de línea de comandos desde dentro de Eclipse puede ir a Ejecutar->Ejecutar las Configuraciones, que abrirá una ventana con el programa que se está ejecutando, así como un cuadro en el que puede entrar en los argumentos.
Me encontré con otro rápido y sucio solución si solo quieres ver algunas de salida en la línea de comandos. Pero esto es no es una buena práctica para el largo plazo!
Quitar el paquete de la declaración en el código (Eclipse se quejan y le dará una cruz roja, ignorar que la primera), por ejemplo,
package hello;
Guardar.
Abrir la línea de comandos y navegar hasta que esté en la carpeta src (cd).
Compilar el archivo java, por ejemplo,
javac HelloWorld.java
Ejecutar el archivo de clase java, por ejemplo,
java HelloWorld
Se debe trabajar, siempre y cuando usted está en el directorio correcto sin ningún paquete de declaraciones en el código! El paquete de declaraciones no causa problemas..y Eclipse está configurado para asegurarse de que todo funciona así que por eso es bueno tener el paquete de declaraciones de allí. Una solución alternativa es ir realmente y establecer la ruta de clases por su cuenta (que siempre me confunde cada vez que tengo que hacerlo yo, que rara vez lo hacen).