¿Cómo ejecutar un archivo .class que forma parte de un paquete de cmd?

Sigo recibiendo errores cuando hago que mi clase sea parte de un paquete e bash ejecutarlo desde cmd.

Aquí está el código que funciona después de usar javac y luego java:

class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 

y luego el código que no funciona:

 package com; class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 

dándome este error después de intentar ejecutar “java HelloWorld”:

 Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong nam e: com/HelloWorld) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 

Esto es lo que he tratado de hacer hasta ahora:

 java -cp . HelloWorld java -cp . com.HelloWorld java -cp . com/HelloWorld java HelloWorld java com.HelloWorld java com/HelloWorld 

Tenga en cuenta que javac devuelve sin errores y que simplemente elimina “package com;” resuelve el problema A veces, en otros escenarios, aparece un error que dice que no se puede encontrar el archivo de la clase principal o algo parecido.

¿Qué estoy haciendo mal?

Supongamos que ha cd’d a C: / projects y HelloWorld.class está en C: / projects / com, simplemente escriba

 java com.HelloWorld 

Los paquetes están directamente relacionados con la ubicación de directorio esperada del archivo.

Es decir, si tiene un archivo fuente con la directiva de paquetes de com , se espera que el archivo se encuentre en el directorio com .

En su ejemplo HelloWorld , se esperaría que el archivo HelloWorld.java se almacenara en el directorio com , como com\HelloWorld.java

Cuando compile el archivo, creará un archivo de clase llamado HelloWorld.class en el directorio com , como com\HelloWorld.class

De esta manera, cuando Java vaya a buscar la clase com.HelloWorld , en realidad buscará su ruta de clases y le agregará com\HelloWorld.class hasta que encuentre su archivo de clase o se quede sin la ruta de clases.

Ejemplo

Entonces, copié su ejemplo HelloWorld.java (con paquete) a C:\java\com\HelloWord.java

Desde la línea de comando, cambié al directorio C:\java

 C:\java>dir com Volume in drive C is OS Volume Serial Number is ####-#### Directory of C:\java\com 09/08/2013 01:55 PM  . 09/08/2013 01:55 PM  .. 09/08/2013 01:55 PM 135 HelloWorld.java 

Luego compilé el HelloWorld.java

 C:\java>javac com\HelloWorld.java 

Luego lo ejecuté …

 C:\java>java com.HelloWorld Hello World! 

Es posible que desee leer un tutorial de Paquetes.

Ejecute el progtwig desde el directorio padre del directorio com .

 java com.HelloWorld 

La syntax es:

 java -classpath /path/to/package-folder . 

Por lo tanto, puede probar: java com.HelloWorld que esperaría que el archivo com/HelloWorld.class esté presente como ruta de clase, por defecto, apunta al directorio actual (si no se especifica).

En caso de que esté en una carpeta diferente, intente especificar classpath :

 $ CLASSPATH=/path/to/package-folder/ java com.HelloWorld Hello World! $ java -cp /path/to/package-folder/ com.HelloWorld Hello World! $ cd /path/to/package-folder/ && java com.HelloWorld Hello World! 

Para una explicación más detallada, verifique: ¿Cómo ejecuto los archivos .class de Java?

Supongamos que el archivo se ubica en C: / projects / com / HelloWorld y puede intentarlo de las siguientes maneras.

1. java -cp c:/projects com.HelloWorld

2. cd c:/projects
java com.HelloWorld

Si no hay statement de paquete y habrá un pequeño cambio.

1. java -cp c:/projects/com HelloWorld

2. cd c:/projects/com
java HelloWorld

alternativamente, la ruta relativa estará bien.

Cuando compile el código java, use -d, en su caso, sería

 javac -d . com.HelloWorld.java 

Después del comando anterior, el comstackdor Java genera una carpeta llamada “com”, debajo de la carpeta “com”, verá su HelloWorld.class

Luego, debajo de la misma carpeta donde ejecuta javac, ejecute el siguiente comando

 java com.HelloWorld 

Intenta usar el directorio absoluto o coloca HelloWorld.class en .. \ last_directory \ com

 1. java -cp .......\last_directory com.HelloWorld 2. java -cp .......\last_directory HelloWorld(with created com) 

Cree una carpeta llamada com en la carpeta Java y coloque el HelloWorld.java en com carpeta com . A continuación, ejecute de nuevo javac y java .

No necesita un distintivo -cp mientras ejecuta una clase java, -cp necesario mientras ejecuta una clase o un progtwig principal desde un archivo binario (jar). Al ejecutar un progtwig principal desde una línea de comando, debe asegurarse de tener la clase en la misma estructura de carpetas que el nombre del paquete en el archivo java, p. Ej.

 home/user/foo java com.test.className here classNmae class file and exist under home/user/foo/com/test 

Espero eso ayude.

Podría haber un problema así, cuando esté ejecutando el comando ‘java’ directamente desde la carpeta de sus archivos ‘* .class’. Este comando debe ejecutarse desde el directorio ‘padre’ del proyecto. Todo está bien explicado en el siguiente artículo:

http://javarevisited.blogspot.de/2015/04/error-could-not-find-or-load-main-class-helloworld-java.html

Primero debe comstackrlo escribiendo este comando en CMD, por ejemplo, su archivo está en c: \ directorio:

 C:\com>javac HelloWorld.java 

Después de eso puedes ejecutar el resultado escribiendo:

 c:\com>java HelloWorld