Error de comando de Java: la clase principal no se puede encontrar o no se puede cargar

La versión de Java que utilizo es:

java version "1.8.0_191"

Estructura de directorio de código: Inserte la descripción de la imagen aquí
ClassPathDemo.java:

package com.jiaobuchong;

import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.StringUtils;

public class ClassPathDemo {
    
    

    public static void main(String[] args) {
    
    
        Set<String> set = new HashSet<>();
        set.add("jack");
        System.out.println(set);
        System.out.println(jarTest("one"));
    }

    private static String jarTest(String a) {
    
    
        if (StringUtils.isBlank(a)) {
    
    
            return null;
        }
        return a.toUpperCase();
    }
}

Use el comando javac para compilar:
Inserte la descripción de la imagen aquí
la ruta de clase se especifica aquí, de lo contrario, el compilador no puede encontrar la clase StringUtils.
En el directorio de prueba:
Inserte la descripción de la imagen aquí
¿Qué diablos es este informe es? 找不到或无法加载主类. Me datos de múltiples consultas y ninguna fruta, directorio del paquete jar dependientes se especifican: ~/test/jar/commons-lang3-3.4.jar, también se especifica archivos de clase compilados en el directorio: ~/test.

Después de una prueba, resultó ser un problema con el directorio especificado:
Inserte la descripción de la imagen aquí
cuando ~/testreemplacé la ruta absoluta: /Users/jackchou/testdirectorio especificado normal, ruta de clase original, el segundo directorio no puede usar ~el primer directorio. Para evitar errores, classpath especifica una ruta absoluta java -classpath /Users/jackchou/test/jar/commons-lang3-3.4.jar:/Users/jackchou/test com.jiaobuchong.ClassPathDemoy esta clase Java se puede ejecutar en cualquier directorio.
Inserte la descripción de la imagen aquí
Para que el comando anterior se ejecute normalmente, debe asegurarse de que el comando java se ejecute en el directorio de la clase compilada.

La ruta de clases predeterminada es el directorio actual, cuando la ruta de clases personalizada se sobrescribirá de forma predeterminada, para unirse al directorio actual en la ruta de clases, directamente .en la línea.

Referencia: Establecer la
comprensión de Class Path de classpath y cómo usarla
. Explicación detallada de CLASSPATH en proyectos JAVA .
Líneas de comando JAVA y JAVAC; java se compila y ejecuta con el nombre del paquete, y se ejecuta con un paquete jar dependiente externo

Supongo que te gusta

Origin blog.csdn.net/jiaobuchong/article/details/89052616
Recomendado
Clasificación