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?

usuario1177567
fuente
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
kensen john
fuente
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
Jamsheer
fuente
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
usuario2573056
fuente
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.

Sarath Kumar Sivan
fuente
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!

imbuido
fuente
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]
Isaq
fuente
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
Shravya
fuente
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
ArockiaRaj
fuente
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 .

Gurú
fuente
1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java
pratap
fuente
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

Srihari
fuente
-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
heraldo
fuente