Diferencias entre el classpath y sourcepath opciones de javac

He leído el Sol de la documentación y un montón de puestos en el Desbordamiento de Pila, pero todavía estoy confundido acerca de las diferencias entre el compilador de Java opciones -cp y -sourcepath.

Vamos a decir que tengo esta estructura de directorios:

c:\Java\project1\src (where the Java source files are)  
c:\Java\project1\bin (where the Java class files will be or already are)  

También vamos a decir que tengo un archivo de código fuente MainClass.java en un paquete com.mypackage, y que la estructura de directorios es aceptar en la carpeta de origen.

Estoy en el project1 directorio y ejecutar:

javac -d bin -sourcepath src src/com/mypackage/MainClass.java  

o

javac -d bin -classpath src src/com/mypackage/MainClass.java  

y obtener el mismo resultado. En modo detallado, la ruta de búsqueda de archivos de código fuente es src en ambos casos.

Sería genial si alguien me podría ayudar a averiguar los detalles de estas opciones.

InformationsquelleAutor Alex | 2010-03-14

4 Kommentare

  1. 25
     -classpath classpath

    Conjunto de la clase de usuario camino, ignorando el usuario de la clase path en la variable de entorno CLASSPATH. Si ni CLASSPATH o -classpath es especificado, el usuario ruta de clase consiste en el directorio actual.

    Si el-sourcepath opción no se especifica, el usuario de la clase path es buscado en los archivos de origen, así como los archivos de clase.

    -sourcepath sourcepath

    Especificar el código fuente de la ruta de acceso de búsqueda para la clase o interfaz de definiciones. Como con la clase de usuario de la ruta, la ruta de origen de las entradas están separados por signos de punto y coma (;) y pueden ser directorios, JAR archivos, o archivos ZIP. Si los paquetes se utilizan, la ruta de acceso local nombre dentro del directorio o archivo debe reflejar el nombre del paquete.

    Nota que las clases se encuentran a través de la ruta de clases están sujetos a la nueva compilación automática, si sus fuentes se encuentran.

    • Gracias por tu respuesta. La última frase es lo que estaba buscando: la nueva compilación automática de los archivos de origen se encuentran en el cp. He comprobado la fecha de modificación de los .clase de archivos en el directorio bin y sigue este principio! Aquí está la gran diferencia entre las 2 opciones. La compilación de tiempo da esta pista también. Gracias!
  2. 10
    • sourcepath es donde está la raíz de su código para compilar
    • classpath contiene su código, sino también las librerías que necesitas
  3. 5

    CLASSPATH le dice al compilador y el cargador de clases donde buscar la .clase de archivos que necesita.

    Sourcepath es algo que no uso mucho. Creo que es opcional, debido a que el directorio actual es el sourcepath. CLASSPATH no.

  4. 3
    • classpath se busca a una clase.clase) archivos
    • sourcepath en busca de la fuente (.java) archivos (.una.k.una clase o interfaz de definiciones)

    Sin embargo, si sourcepath NO se especifica, el classpath es buscado para ambos archivos Y los archivos de origen.

    Esto me lleva a creer que casi siempre podemos mantener las cosas simples, mediante la utilización de classpath, y evitando sourcepath por completo.

    Personas que necesitan utilizar tanto classpath y sourcepath son, probablemente, la orientación de extraño contenido del directorio. Por ejemplo, podría haber una carpeta que contiene los archivos de origen y los archivos de clase, pero sólo quieren tener los archivos de origen en búsqueda.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea