Java 파일에 jar 파일을 포함하고 명령 프롬프트에서 컴파일하는 방법


121

3 개의 jar 파일과이 jar 파일에 종속 된 .java 파일이 있습니다. 명령 프롬프트를 사용하여 이러한 jar 파일로 .java 파일을 어떻게 컴파일합니까?


9
type "javac -help"
Sean Patrick Floyd


2
희망 당신을 도와줍니다 ..
파힘 Parkar에게

2
참고 : 실행하려는 Java 파일 이름 앞에 -cp / -classpath 플래그를 사용해야합니다. 그렇지 않으면 플래그를 무시합니다. java -cp ".;magic.jar" Foo괜찮습니다 java Foo -cp ".;magic.jar".
Dmitry

답변:


108

"-cp"옵션을 사용하여 "javac"명령에 jar 파일을 포함 할 수 있습니다.

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

"-cp"대신 "-classpath"를 사용할 수도 있습니다.

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

환경 변수 "CLASSPATH"를 올바르게 설정하여 컴파일 할 때마다 jar를 포함 할 수 있습니다. 환경 변수는 Java 파일을 컴파일 / 실행하는 데 사용해야하는 jar 및 클래스가있는 경로를 저장합니다. 파일을 컴파일 할 때마다 jar를 개별적으로 포함 할 필요는 없습니다.

시스템마다 클래스 경로를 환경 변수로 설정하는 방법이 다릅니다. Windows, Linux 등의 명령은 다릅니다.

이 블로그 에서 자세한 내용을 확인할 수 있습니다 .

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

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.java나를 위해 일했습니다. 나는 맥을 사용하고 있었다. 나는 어딘가에서 ':'가 유닉스에 사용되는 것을 읽었습니다.
Sri

2
이 명령을 사용했지만 jar 파일에있는 클래스에 액세스하려고하면 ClassNotFoundException이 발생합니다.
Mohammed Rampurawala

3
무엇을 .:합니까? 어리석은 질문이라면 미안하지만 나에게는 분명하지 않습니다.
Miranda

1
@kensen. 오타 오류. replace : (콜론)을 세미콜론 (;)으로
Pankaj Shinde

위는 우분투에서 나를 위해 일하지 않았습니다. 나는 따옴표없이 시도했고 효과가 있었다. 전의. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Alfaz Jikani

24

Linux에서 시도하십시오

javac -cp jarfile source file 

예 :-

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

내가하려고하면 예를 -.:/jars내 JAR 파일이있는 디렉토리로 대체, 나는 오류 메시지가 나타납니다 javac: invalid flag: /location/of/first/jar/file.jar.
Arturo don Juan

stackoverflow.com/questions/27915204/... 이를 참조하지만 제발, 당신의 문제를 해결할 수 있습니다
Jamsheer

20

구문은 Windows dos 명령에서 작동합니다.

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

4
위 명령을 성공적으로 실행 한 후 Java 클래스 파일을 실행하는 방법은 무엇입니까?
Yash Agrawal

자바 -cp first.jar : second.jar : third.jar을 MyFile
Krsna Chaitanya

15

환경 변수 설정을 통해 모든 종속성 jar 파일을 클래스 경로에 추가하거나 아래 단계를 사용하십시오.

  1. 명령 프롬프트를 엽니 다.
  2. 컴파일하려는 Java 파일의 위치로 디렉토리를 변경하십시오.
  3. 아래와 같이 종속성 jar 파일의 클래스 경로를 설정하십시오.

    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. 이제 Java 파일을 컴파일 할 수 있습니다. (명령 javac YourJavaFile.java)

이것이 당신의 의존성 문제를 해결하기를 바랍니다.


15

다음은 단계입니다.

  1. 모든 jar와 .java 파일을 같은 폴더에 복사합니다 (긴 경로를 언급하는 대신 파일 이름을 쉽게 언급 할 수 있습니다. jar와 .java를 별도의 폴더에 보관할 수 있음).

  2. 컴파일하기,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. 실행하다,

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

이게 도움이 되길 바란다!


1
실행 방법도 보여 주셔서 감사합니다. 점 콜론은 다시 무엇을합니까? 현재 디렉터리와 파일 구분 기호입니까?
ThisClark

예, 현재 디렉터리이며 Unix 파일 구분 기호입니다 (Windows에서는 세미콜론).
MathuSum Mut

6

그러면 .class 파일이 생성됩니다.

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

이것은 클래스 파일을 실행합니다 :

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

1
: 자바 명령에 의한 오류를 보여주고있다 java.lang.ClassNotFoundException가 : org.slf4j.LoggerFactory 내가하고 싶은 컴파일 ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.java와 ** 실행 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
야쉬 아그라 왈

5

이 시도.

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

2

컴파일 시간과 런타임에 종속성을 지정해야합니다.

컴파일하려면이 형식을 사용하십시오.

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

예:

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

이 답변은 정확하지만 다른 답변이 아직 말하지 않은 것을 추가하지 않는 것 같습니다. 이 답변과 다른 답변 사이에 중요한 차이점이 있다면 답변이 다른 이유를 설명하는 것이 좋습니다.
DaveyDaveDave

런타임과 컴파일 시간에 종속성 지정을 언급했지만 런타임에 종속성을 지정하는 방법은 설명하지 않았습니다.
Michael Fulton

1

때때로 다음 변경 작업을 수행합니다.

java -cp ".;%CLASSPATH%" classfilename 

참고 : Windows의 경우. Linux의 경우 $CLASSPATH대신 사용하십시오.


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

5
이 코드가 문제를 해결할 수 있지만, 이것이 문제를 해결하는 방법과 이유에 대한 설명포함 하여 게시물의 품질을 향상시키는 데 실제로 도움이 될 것이며 아마도 더 많은 찬성표를 얻게 될 것입니다. 지금 질문하는 사람뿐만 아니라 미래에 독자를 위해 질문에 답하고 있다는 것을 기억하십시오. 제발 편집 설명을 추가하고 제한 및 가정이 적용 무엇의 표시를 제공하는 답변을.
이중 경고음

0

Ubuntu를 사용하는 경우 :

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

폴더 위치로 이동 (패키지 구조 외부)

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

참고 : 파일 위치 및 패키지 이름을 참조하십시오.


-1

Windows 용

  1. 명령 프롬프트에서 Java 파일이있는 디렉토리에 연결하십시오.
  2. 클래스 경로 설정 (여기서는 d = 폴더 이름) set classpath = C : \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. Enter를 누르고
  4. 이제 java 파일 javac filename.java를 컴파일하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.