.jar 파일에서 클래스를 사용하는 방법은 무엇입니까?


134

JAR 파일에 대한 Sun의 Java 자습서를 읽었지만 여전히 내 문제에 대한 해결책을 찾을 수 없습니다. jtwitter.jar라는 jar 파일에서 클래스를 사용해야하고 파일을 다운로드 한 후 실행을 시도했습니다 (어제 .jar 파일을 두 번 클릭하여 실행할 수 있음을 알았습니다). Vista에서 " [path] /jtwitter.jar "에서 Main-Class Manifest 속성을로드하지 못했습니다.

.jar 파일을 코딩 한 사람이 가져 오기를 원하지만 .jar 파일을 어디에 저장하여 내 코드로 가져 오나요? .jar 파일과 .java 파일을 같은 디렉토리에 넣으려고했지만 작동하지 않았습니다.

내가 일하려고하는 파일은 여기에 있습니다 : http://www.winterwell.com/software/jtwitter.php

JCreator LE를 사용하고 있습니다.


13
다운 보트가 왜 필요한가요? 제 생각에는 좋은 질문이며 답변에 흥미로운 정보가 있습니다! (+1)
guerda 2018 년

답변:


34

모든 jar 파일이 실행 가능한 것은 아닙니다.

이제 jar 아래에있는 클래스를 Java 파일로 가져와야합니다. 예를 들어

import org.xml.sax.SAXException;

IDE에서 작업중인 경우 해당 설명서를 참조해야합니다. 또는 적어도이 스레드에서 어느 것을 사용하고 있는지 지정하십시오. 그것은 우리가 당신을 더 도울 수있게 해줄 것입니다.

IDE를 사용하지 않는 경우 javac -cp 옵션 을 참조하십시오 . 그러나 프로그램을 jar파일 로 패키지화 하고 jar그 안에 필요한 모든 것을 포함 시키는 것이 훨씬 좋습니다 . 그런 다음 실행하기 위해 jar같은,

java -jar my_program.jar

META-INF/MANIFEST.MF파일 이 있어야 합니다 jar. 방법은 여기를 참조 하십시오 .


예전에는 알고 있지만 실제로는 아무 import것도 필요하지 않습니다 . 클래스를 사용하는 정규화 된 클래스 이름을 작성하지 않아도되므로 단순한 클래스 이름 ( SAXException) 만 허용됩니다 . 네임 스페이스를 가져 오는 것과 같은 종류
user85421

173

Classnamejar 파일에 포함 된 클래스를 사용해야한다고 가정 해 봅시다.org.example.jar

그리고 소스는 다음과 같은 파일에 있습니다 mysource.java.

import org.example.Classname;

public class mysource {
    public static void main(String[] argv) {
    ......
   }
}

먼저, 코드에서 클래스를 가져와야합니다. 그렇게하려면import org.example.Classname;

둘째, 소스를 컴파일 할 때 jar 파일을 참조해야합니다.

컴파일하는 동안 :;컴파일하는 동안 의 차이점에 유의하십시오

  • 운영 체제와 같은 유닉스 환경에있는 경우 :

    javac -cp '.:org.example.jar' mysource.java
  • 창문 아래에 있다면 :

    javac -cp .;org.example.jar mysource.java

그런 다음 바이트 코드 파일을 얻습니다. mysource.class

이제 이것을 실행할 수 있습니다 :

  • 운영 체제와 같은 유닉스 환경에있는 경우 :

    java -cp '.:org.example.jar' mysource
  • 창문 아래에 있다면 :

    java -cp .;org.example.jar mysource

4
이 표기법을 조금 더 설명해 주시겠습니까? 이것은 내 문제를 해결했지만 불행히도이 특별한 경우 세미콜론 / 콜론의 의미를 알 수 없습니다.
cemulate

2
이 세미콜론 / 콜론 이야기는 하루 종일 비용이 들었습니다. 적어도 지금은 찾았습니다, 감사합니다!
Maxim Zubarev

1
@ChaseMeadors 세미콜론 / 콜론은 본질적으로 "and"를 의미합니다. 에서 분리 중 .입니다 org.example.jar.
duozmo

감추고 있다면 대부분의 *PATH변수 와 구별됩니다 . .jar 파일의 이름은 개별적으로 지정해야합니다 .
duozmo

15

클래스 경로에 jar 파일을 추가해야합니다. 자바 클래스를 컴파일하려면 :

javac -cp .;jwitter.jar MyClass.java

코드를 실행하려면 (MyClass에 기본 메소드가 포함되어있는 경우) :

java -cp .;jwitter.jar MyClass

jar 파일을 어디서나 가질 수 있습니다. jar 파일이 Java 파일과 동일한 디렉토리에있는 경우 위의 작업이 수행됩니다.


7

코드를 컴파일 / 실행할 때 .jar 파일을 클래스 경로에 넣어야합니다. 그런 다음 .jar에서 클래스의 표준 가져 오기를 사용하십시오.


6

workmad3가 말했듯이 jar 파일이 클래스 경로에 있어야합니다. 명령 줄에서 컴파일하는 경우 -classpath 플래그를 사용해야합니다. (CLASSPATH 환경 변수는 피하십시오. 목에 통증이 있습니다.)

IDE를 사용하는 경우 어느 IDE를 알려 주시면 해당 IDE에 특정한 단계를 도와 드릴 수 있습니다.


classpath env 변수는 스크립트 또는 firedaemon과 같은 것을 사용하여 앱을 실행하는 경우 유용합니다. 전 세계적으로 사용할 때 그것은 단지 고통입니다 :)
workmad3

나는 아직도 그것을 분명히보고 싶어한다.
Jon Skeet

동의합니다. 명시 적으로보고 싶습니다.
J3r3myK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.