Cómo incluir archivos jar con un archivo java y compilar en el símbolo del sistema


121

Tengo 3 archivos jar y un archivo .java que depende de estos archivos jar. ¿Cómo compilo el archivo .java con estos archivos jar usando un símbolo del sistema?


9
escriba "javac -help"
Sean Patrick Floyd


2
Espero que esto te ayude ...
Fahim Parkar

2
Nota personal: debe usar el indicador -cp / -classpath antes del nombre del archivo java que desea ejecutar; de lo contrario, ignorará el indicador. java -cp ".;magic.jar" Fooestá bien, java Foo -cp ".;magic.jar"no.
Dmitry

Respuestas:


108

Puede incluir sus archivos jar en el comando "javac" usando la opción "-cp".

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java

En lugar de "-cp", también puede utilizar "-classpath"

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java

Puede incluir los archivos jar cada vez que compile configurando la variable de entorno "CLASSPATH" correctamente. La variable de entorno almacenará la ruta donde se encuentran los archivos jar y las clases que se deben usar para compilar / ejecutar cualquier archivo java. No tendrá que incluir los frascos individualmente cada vez que compile su archivo.

Las diferentes máquinas tienen diferentes métodos para establecer la ruta de clase como una variable de entorno. Los comandos para Windows, Linux, etc. son diferentes.

Puede encontrar más detalles en este blog .

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javatrabajó para mi. Estaba usando mac. Leí en alguna parte que ':' se usa para Unix.
Sri

2
He usado este comando pero cuando intenté acceder a la clase presente en el archivo jar, obtengo ClassNotFoundException.
Mohammed Rampurawala

3
¿qué .:hacer? lo siento si es una pregunta tonta, pero no es obvia para mí.
Miranda

1
@kensen. Error tipográfico. reemplace: (dos puntos) con punto y coma (;)
Pankaj Shinde

Lo anterior no funcionó para mí en ubuntu. Lo intenté sin comillas y funcionó. Ex. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani

24

Pruébelo en Linux

javac -cp jarfile source file 

EJEMPLO: -

javac  -cp .:/jars/* com/template/*.java

Cuando intento el EJEMPLO: - , .:/jarsreemplazado con el directorio en el que se encuentran mis archivos JAR, aparece el mensaje de error javac: invalid flag: /location/of/first/jar/file.jar.
Arturo don Juan

stackoverflow.com/questions/27915204/… Por favor, consulte esto, puede resolver su problema
Jamsheer

20

La sintaxis funcionará en el comando DOS de Windows:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java

4
Después de la ejecución exitosa del comando anterior, ¿cómo ejecutar el archivo de clase java?
Yash Agrawal

java -cp first.jar: second.jar: third.jar MyFile
Krsna Chaitanya

15

Intente agregar todos los archivos jar de dependencia a su ruta de clases a través de la configuración de variables de entorno o siga los pasos a continuación:

  1. Abra el símbolo del sistema.
  2. Cambie el directorio a la ubicación de su archivo Java que le gustaría compilar.
  3. Establezca la ruta de clase para sus archivos jar de dependencia como se muestra a continuación:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. Ahora, puede compilar su archivo java. (comando: javac YourJavaFile.java)

Espero que esto resuelva su problema de dependencia.


15

Los siguientes son pasos,

  1. Copie todos los archivos jar y su archivo .java en una misma carpeta (será fácil mencionar los nombres de los archivos en lugar de mencionar la ruta larga. Aunque puede mantener jar y .java en carpetas separadas).

  2. Compilar,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. Ejecutar,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>

¡Espero que esto ayude!


1
Gracias por mostrar también cómo ejecutar. ¿Qué hace el punto y dos puntos de nuevo? ¿Es el directorio actual y el separador de archivos?
ThisClark

Sí, es el directorio actual y un separador de archivos Unix (en Windows es un punto y coma).
MathuSum Mut

6

Esto creará un archivo .class:

javac -classpath "[jarname with specified path]" [java filename]

Esto ejecutará el archivo de clase:

java -cp [jarname with specified path]: [java filename]

1
El comando java muestra un error Causado por: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Quiero compilar ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javay ** ejecutar java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
Yash Agrawal

5

Prueba esto.

javac -cp .:jars/jar1:jars/jar2:jars/jar3 com/source/*.java

2

Debe especificar las dependencias en tiempo de compilación y en tiempo de ejecución

Para compilar use este formato

javac -cp "*.jar;classfile_path" filename.java

Ejemplo:

javac -cp "ojdbc6.jar;c:\programs" Main.java

Esta respuesta, aunque correcta, en realidad no parece agregar nada que las otras respuestas no digan ya. Si hay alguna diferencia clave entre esta y las otras respuestas, sería mejor explicar por qué su respuesta es diferente.
DaveyDaveDave

Mencionaste especificar dependencias en tiempo de ejecución, así como en tiempo de compilación, pero no explicas cómo especificarlas en tiempo de ejecución.
Michael Fulton

1

algunas veces hacer que el siguiente cambio funcione:

java -cp ".;%CLASSPATH%" classfilename 

Nota: EN Windows. En su $CLASSPATHlugar, para linux .


1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java

5
Si bien este código puede resolver la pregunta, incluir una explicación de cómo y por qué esto resuelve el problema realmente ayudaría a mejorar la calidad de su publicación y probablemente resultaría en más votos a favor. Recuerde que está respondiendo la pregunta a los lectores en el futuro, no solo a la persona que pregunta ahora. Por favor, editar su respuesta para agregar explicaciones y dar una indicación de lo que se aplican limitaciones y supuestos.
bip doble

0

Si está usando Ubuntu:

/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java

Ir a la ubicación de la carpeta (fuera de la estructura del paquete)

/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample

Nota: consulte las ubicaciones de los archivos y los nombres de los paquetes


-1

Para ventanas

  1. conéctese al directorio donde están presentes los archivos java en el símbolo del sistema.
  2. establecer la ruta de clases (aquí d = nombre de la carpeta) establecer classpath = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. presione enter y
  4. ahora compile el archivo java javac filename.java
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.