He compilado un programa HelloWorld y estoy usando el símbolo del sistema para ejecutarlo. El archivo .class se llama HelloWorld2.class
El archivo se encuentra en C: \ Users \ Matt \ workspace \ HelloWorld2 \ bin Esto es lo que obtengo cuando voy al símbolo del sistema y escribo "Java HelloWorld2":
C:\Users\Matt>Java HelloWorld2
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld2
Caused by: java.lang.ClassNotFoundException: HelloWorld2
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)
Could not find the main class: HelloWorld2. Program will exit.
Esperaba ver un HelloWorld impreso. ¿Qué estoy haciendo mal? Tengo el JDK instalado.
java
compilation
Skizz
fuente
fuente

Respuestas:
Necesita establecer la ruta de clase para encontrar su clase compilada:
java -cp C:\Users\Matt\workspace\HelloWorld2\bin HelloWorld2fuente
Para ejecutar el archivo de clase Java desde la línea de comandos, la sintaxis es:
donde packageName (generalmente comienza con
comoorg) es el nombre de la carpeta donde está presente su archivo de clase.Por ejemplo, si el nombre de su clase principal es Aplicación y el nombre del paquete Java de su aplicación es
com.foo.app, entonces su archivo de clase debe estar en lacom/foo/appcarpeta (carpeta separada para cada punto), por lo que ejecuta su aplicación como:Nota:
$indica el indicador de shell, ignórelo al escribirSi la clase no tiene ningún
packagenombre definido, sólo tiene que ejecutar como:java App.Si tiene otras dependencias de jar, asegúrese de especificar su parámetro classpath con
-cp/-classpatho usando laCLASSPATHvariable que apunta a la carpeta con sus archivos jar / war / ear / zip / class . Entonces, en Linux, puede prefijar el comando con:,CLASSPATH=/path/to/jarsen Windows, debe agregar la carpeta a la variable del sistema. Si no se establece, la ruta de la clase de usuario consta del directorio actual (.).Ejemplo practico
Dado que hemos creado un proyecto de muestra usando Maven como:
$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falsey hemos compilado nuestro proyecto
mvn compileen nuestromy-app/directorio, generará nuestro archivo de clase entarget/classes/com/foo/app/App.class.Para ejecutarlo, podemos especificar la ruta de clase a través
-cpo ir directamente a ella, verifique los ejemplos a continuación:$ find . -name "*.class" ./target/classes/com/foo/app/App.class $ CLASSPATH=target/classes/ java com.foo.app.App Hello World! $ java -cp target/classes com.foo.app.App Hello World! $ java -classpath .:/path/to/other-jars:target/classes com.foo.app.App Hello World! $ cd target/classes && java com.foo.app.App Hello World!Para verificar su clase y el nombre del paquete, puede usar la herramienta de desensamblaje de archivos de clase Java, por ejemplo:
$ javap target/classes/com/foo/app/App.class Compiled from "App.java" public class com.foo.app.App { public com.foo.app.App(); public static void main(java.lang.String[]); }Nota:
javapno funcionará si el archivo compilado se ha ofuscado.fuente
Esto puede significar muchas cosas, pero la más común es que la clase contenida en el archivo no tiene el mismo nombre que el archivo en sí. Por lo tanto, verifique si su clase también se llama HelloWorld2.
fuente
C:/blah/blah/foldercontainJavajavac javafile.javafuente
¡Tienes que poner java en minúsculas y tienes que agregar .class!
fuente