Ejecutando Java en paquete desde línea de comandos

He leído las preguntas publicadas anteriormente. Algunos son imprecisos y ninguno resolvió mi problema, así que me veo obligado a preguntar nuevamente.

Tengo dos clases simples,

package One; import One.Inner.MyFrame; public class test { public static void main(String args[]) { MyFrame f= new MyFrame(); } } 

Y la otra clase es,

 package One.Inner; import java.awt.*; import javax.swing.*; public class MyFrame extends JFrame { public MyFrame() { setPreferredSize(new Dimension(400,560)); setVisible(true); } } 

Estoy en la carpeta base “básica” en Windows cmd. Yo compilo usando

 basic> javac *.java -d . 

Se crea una carpeta y una subcarpeta.

 cd One basic\One> java test 

Esto genera un gran conjunto de errores. Muchas respuestas dirigidas a especificar la ruta completa que no funcionó. Mis clases están en Uno, por lo que especificar One using -cp tampoco funcionó.

Lo ejecutarías como:

 java One.Test 

… pero desde el directorio raíz ( basic ), no desde el directorio One . Siempre especifica el nombre de clase completo .

Ah, y los nombres de los paquetes en Java deberían estar en minúsculas, por lo que deberían ser one y one.inner , no One y One.Inner . Solo una convención, pero que casi todos siguen.

Si el directorio es:

 basic\One 

Ejecute Java desde el directorio base del paquete:

 basic>java One.test or basic>One.test  

(idealmente el paquete sería en minúscula y la clase mayúscula):

 basic>java one.Test 

Si obtiene mensajes ‘no existe’, entonces el comando java no puede encontrar las clases a las que hizo referencia en su clase. Puede señalarlos con la opción -cp (‘.’ Significa ‘aquí’, y puede agregar tantos lugares como desee divididos por ‘;’ en Windows y ‘:’ en Linux).

 basic>java -cp . one.Test or basic>java -cp .;..\..\someJar.jar;c:\someDirectory\classesDirectory one.Test 

Esto se debe a que si declara el paquete en su archivo java, el comstackdor JAVA cree que tiene la misma architecture de carpeta en su sistema. En su caso, el comstackdor Java busca One como un paquete y luego test.class., O para ser muy específico, simplemente mire dentro de su archivo .class y verá qué ruta busca. Por favor, eche un vistazo a la imagen de abajo (en mi caso uso Hello y Tester)

.clase

Como puede ver la ruta en la imagen es Hello / Tester (ejemplo de mi caso), entonces la architecture debería ser como Hello-> Tester.

Y si no tiene la misma architecture y desea crear la misma durante la comstackción, use el comando javacp.

mientras creas una clase con un paquete si quieres ejecutarlo desde un cmd, debes crear un directorio con el mismo nombre de paquete, poner el .class en él y luego puedes ejecutarlo fácilmente; por ejemplo, creaste una clase con el nombre “uno” y esta clase en el paquete con paquete de nombre, debe ejecutar estos comandos

1 javac one.java
después de la comstackción creó un directorio con el paquete de nombres, luego de eso ejecuta este comando
2 java pack.one
Nota:
todo esto debe hacerse en el directorio de trabajo actual y el nombre “uno” lo elegí aquí como nombre de archivo y nombre de clase principal, todos sabemos que el primer nombre utilizado en el primer comando es el nombre del archivo y el segundo es el nombre de la clase principal

La siguiente línea del código de Haralan Dobrev resuelve el problema.

 java -cp ../ one.Test