Soy compilar varios archivos en un directorio (javac *.java) pero tengo un problema cuando trato de hacer esto:

Puedo obtener errores de compilación diciendo que decir javac no puede encontrar un símbolo de un objeto.

Tengo varios paquetes que contienen archivos de java que son necesarios para ejecutar el programa principal. Pero parece que tratando de compilar estos uno por uno no va a funcionar. Funciona muy bien en mi IDE, pero estoy interesado en aprender cómo se lleva a cabo a través del Símbolo del sistema.

El programa principal está en la carpeta de controladores.

He tratado de compilar los archivos en el orden de dependencia, pero que no funcionó.cómo compilar varios archivos de java cuando hay archivos de java en otros paquetes

Si en argfile tienen la lista de todos los archivos a compilar, puede ejecutar javac @argfile. Si usted está usando otros libs, usted tiene que añadir la ruta de clases.
Cuando tengo que hacer algo como edición de la ruta de clase nombre (en este ejemplo) donde debo hacer y cómo? Me he enterado que se hace en el archivo de manifiesto, sin embargo sé que se puede hacer en la configuración del sistema operativo así.
Usted puede agregar classpath de la dependencia a través de la -classpath opción, como por ejemplo: javac -classpath \examples;\lib\Banners.jar \examples\greetings\Hi.java. La mirada en docs.oracle.com/javase/7/docs/technotes/tools/windows/… y docs.oracle.com/javase/7/docs/technotes/tools/windows/….

OriginalEl autor OKGimmeMoney | 2013-06-17

3 Comentarios

  1. 20

    Javac documentación proporciona toda la información necesaria. Sin embargo, podría ser útil el uso de Ant o Maven para la línea de comandos construye.

    Este página se ofrece un buen ejemplo del uso de la primera javac y, a continuación, Ant para la construcción de un proyecto sencillo.


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

    La estructura de árbol del proyecto es este:

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

    Hay dos directorios especiales — build para contener clases compiladas y src para contener los archivos de origen (puede ser en diferentes subdirectorios — paquetes).

    El siguiente comando compila todo el proyecto y pone el resultado en la build directorio.

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

    La -sourcepath src especifica el directorio src como el lugar donde todo el código fuente puede ser detectado por el compilador. El -d build opciones le dice al compilador dónde colocar los archivos compilados.

    Opción src/**/*.java le dice al compilador que los archivos a la realidad de compilación. En este caso específico se dice javac a buscar dos niveles y recoger todos *.java a ese nivel.

    Si hay *.java archivos en diferentes niveles de una lista de archivos debe ser especificado. Para esto, uno podría crear tal en el listado de un archivo externo y pasar estos archivos como en la opción de entrada para javac.

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

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

    El comando anterior crea el archivo source.txt que contiene todos los caminos para que la encuentra *.archivos de java. Para este ejemplo contiene:

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

    Con el fin de compilar el proyecto con la lista de archivos fuente se vacía en source.txt, el siguiente comando se puede utilizar:

    javac -d build @source.txt

    Por favor, tenga en cuenta que @source.txt especificado en el extremo que indica al compilador dónde buscar para obtener una lista de los archivos de origen. Por favor, también tenga en cuenta que el -sourcepath opción puede ser omitido.

    Aquí es cómo la estructura de directorios cambiado 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 build directorio contiene ahora el compilado de archivos de clase en los respectivos paquetes.

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

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

    Por favor, tenga en cuenta que el archivo de separador de : (colon) se utiliza en Unix, Windows cambiar a ; (punto y coma).

    Voy a mirar por encima de la documentación. Otro problema que estoy teniendo es que cuando hago la .el archivo jar no se ejecutará como se ejecuta en el IDE. El icono parpadea y luego no hace nada.
    Es mejor si el registro esta el otro problema como una cuestión diferente. Has compilado el proyecto con éxito?
    No he conseguido el programa a compilar. Lo que pasa es que en el post original.
    Por favor ampliar su pregunta, a continuación, con la estructura del proyecto, incluyendo el java los nombres de archivo. De esta manera sería posible proporcionar una respuesta exacta.
    Ninguna necesidad de reunir el java los nombres de archivo en otro archivo. Sólo tiene que utilizar esta siguiente ejemplo: javac -d compiled $(find src -name *.java). Fuente: stackoverflow.com/a/3512668/435605

    OriginalEl autor 01es

  2. 3

    Soy compilar varios archivos en un directorio (javac *.java)

    Mal ya. Que sólo funcionará correctamente si las clases de Java no están en los paquetes. La manera correcta de hacerlo es la siguiente, donde src es el nombre del directorio en el que todos sus directorios de paquete están arraigados:

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

    etc para lo que su paquete/directorio de diseño. Cada javac línea de comandos de compilar todos los archivos en el directorio con nombre y todos los .archivos de java en otros paquetes/directorios que depende de a que no están ya compilado o que están fuera de fecha.

    Consulte la documentación de la Herramienta para javac.

    Esto es exactamente lo que yo estaba buscando. Muchas gracias! 🙂

    OriginalEl autor user207421

  3. 1

    dos opciones:

    1) Utilizar la línea de comandos para especificar todos los archivos a compilar

    2) Crear un archivo con todos los nombres de archivo (salida de encontrar, tal vez), y ejecutar javac @argfile

    Te refieres a tirar todos los archivos de java en un directorio? Voy a tratar esto como un experimento, pero no es una final de la solución.
    No, él no dijo nada acerca de poner todos los archivos de java en un directorio. No, no puede funcionar.
    No estoy seguro de si estoy haciendo este derecho, pero tengo este error después de intentar ejecutar el programa después de su primer paso: OK, he intentado esto y ahora estoy recibiendo un error de tiempo de ejecución que dice «java.lang.NoClassDefFoundError: ProgramName <nombre equivocado: packageName/ProgramName> yo no sé cómo realizar el segundo paso; he leído a través de la Documentación de Java recomendada en este hilo por alguien más, y no entiendo cómo usarlo.
    NoClassDefFoundError viene de poner todos los .java archivos en el mismo directorio, que nadie les ha dicho que hagan.
    Tengo el NoClassDefFoundError con mi programa de instalación original como bien.

    OriginalEl autor Niels Bech Nielsen

Dejar respuesta

Please enter your comment!
Please enter your name here