varios reconoce proyecto programa por lotes interno externo ejecutar ejecutable desde consola compilar como comando archivos archivo java compilation javac

reconoce - ejecutar java desde cmd



cómo compilar múltiples archivos java cuando hay archivos java en otros paquetes (3)

Estoy compilando varios archivos en un directorio (javac * .java)

Mal ya Eso solo funcionará correctamente si las clases de Java no están en paquetes. La forma correcta de hacer esto es la siguiente, donde src es el nombre del directorio en el que se encuentran todos los directorios de paquetes:

cd src javac package1/package2/*.java javac package3/package4/package5/*.java

etc para lo que sea su paquete / diseño de directorio es. Cada línea de comando javac compilará todos los archivos en el directorio nombrado y todos los archivos .java en otros paquetes / directorios de los que depende que aún no estén compilados o que estén desactualizados.

Consulte la documentación de la herramienta para javac .

Estoy compilando varios archivos en un directorio (javac * .java) pero tengo un problema cuando intento hacer esto:

Recibo errores de compilación que dicen que javac no puede encontrar un símbolo de un objeto.

Tengo varios paquetes que contienen archivos java que son necesarios para ejecutar el programa principal. Pero parece que tratar de compilarlos uno por uno no funcionará. Funciona bien en mi IDE, pero estoy interesado en saber cómo se hace a través del símbolo del sistema.

El programa principal está en la carpeta de controladores.

He intentado compilar los archivos en orden de dependencia pero eso no funcionó.


La documentation Javac proporciona toda la información necesaria. Sin embargo, podría ser útil usar Ant o Maven para compilaciones de línea de comandos.

This página proporciona un buen ejemplo de cómo usar primero javac y luego Ant para crear un proyecto simple.

Aquí hay un proyecto de ejemplo y cómo se puede compilar con javac.

La estructura de árbol del proyecto es esta:

. ├── build └── src ├── attacks ├── drivers │   └── Driver.java └── exceptions └── MyException.java

Hay dos directorios especiales: build para contener clases compiladas y src para contener archivos de origen (podrían estar en diferentes subdirectorios: paquetes).

El siguiente comando compila todo el proyecto y coloca el resultado en el directorio de build .

javac -sourcepath src -d build src/**/*.java

El -sourcepath src especifica el directorio src como el lugar donde el compilador puede encontrar toda la fuente. Las opciones de -d build le indican al compilador dónde colocar los archivos compilados.

La opción src/**/*.java le dice al compilador qué archivos compilar realmente. En este caso específico, le dice a javac que mire dos niveles hacia abajo y seleccione todos los * .java en ese nivel.

Si hay archivos *.java en niveles diferentes de los que se necesita especificar una lista de archivos. Para esto, uno podría crear dicha lista como un archivo externo y pasar estos archivos como en la opción de entrada para javac .

Aquí es cómo se podría hacer esto bajo Linux / Unix:

find -name "*.java" > source.txt

El comando anterior crea el archivo source.txt que contiene rutas completas para los archivos * .java encontrados. Para este ejemplo contiene:

./src/drivers/Driver.java ./src/exceptions/MyException.java

Para compilar el proyecto con la lista de archivos de origen source.txt en source.txt , se puede usar el siguiente comando:

javac -d build @source.txt

Tenga en cuenta que @source.txt especifica al final que le indica al compilador dónde buscar una lista de archivos de origen. Tenga en cuenta también que la opción -sourcepath puede omitirse.

Aquí es cómo la estructura del directorio cambió después de ejecutar el comando anterior.

. ├── build │   ├── drivers │   │   └── Driver.class │   └── exceptions │   └── MyException.class └── src ├── attacks ├── drivers │   └── Driver.java └── exceptions └── MyException.java

Como se puede observar, el directorio de build ahora contiene los archivos de clase compilados en los paquetes respectivos.

Y, si desea ejecutarlo, suponiendo, por ejemplo, que el Driver tiene el método main , el siguiente comando ejecuta el programa.

java -cp .:build:**/*.class drivers.Driver

Tenga en cuenta que el separador de archivos : (dos puntos) se usa en Unix, para Windows cámbielo a ; (punto y coma).


dos opciones:

1) Use la línea de comando para especificar todos los archivos para compilar

2) Cree un archivo con todos los nombres de archivo (salida de find, quizás) y ejecute javac @argfile