2012-08-12 3 views
6

위와 같이 참조 된 라이브러리로 algs4.jar 파일을 가져 왔습니다. 모두 괜찮은 것 같지만 라이브러리의 클래스를 사용하거나 액세스 할 수 없습니다.Eclipse에서 참조 라이브러리의 클래스를 사용하는 방법

내가 가져온 진술이 있습니까?

이미지 참조 : 나는 참조 된 라이브러리에서 BinarySearch를 사용하기 위해 노력하고있어하지만 나에게 사용하거나 가져올 수있는 옵션을 제공하지 않는 방법

참고.

+1

당신은'ctrl + shift + o'를 할 수 있고 eclipse는 필요한 import를 추가 할 것입니다. 오류로 인해 빌드 경로에'BinarySearch' 클래스가 들어있는 항아리가 누락 된 것처럼 보입니다. – CoolBeans

+3

나는 같은 문제가 ... 같은 algs4.jar :)) –

답변

6

잘 모르겠습니다. 시도하지 않았습니다. 그래도 약간의 해석.

이 라이브러리는 표준 라이브러리입니까, 아니면 직접 만들어서 준 사람입니까?

문제는 클래스 BinarySearchdefault 패키지에 있습니다. 가져올 수 없습니다. 이 라이브러리가 본인이나 친구가 만든 경우, 친구에게 모든 클래스를 기본 패키지에서 좋은 네임 스페이스로 이동시킨 다음 항아리를 다시 만들도록 요청해야합니다.

클래스에 액세스 할 수 있으면 ctr + shift + o 클래스를 가져와야합니다.

+0

그건 내가 생각하기 시작한거야. 그래서 항아리는 패키지에 패키지를 추가했습니다. 이제 import 문 ("com.package. *")을 사용할 수 있으며 클래스 ("BinarySearch bs = new BinarySearch()"에 대한 새 참조를 만들 수도 있습니다.) 그러나 런타임시 ClassNotFoundException을 얻습니다. – jeffstern

+0

또한, 'exception in thread "main"java.lang.NoClassDefFoundError' – jeffstern

+0

@jeffstern -'.class' 파일을 압축 해제하고 이동할 수 없습니다. 소스가 필요합니다. 각각의'.java' 파일에 대해 패키지 선언을 적당한 것으로 변환하고 jar 파일로 내 보냅니다. 기존의'.class' 파일은 여전히'default'와 같은 오래된 패키지 선언을 가지고 있습니다. 원하는 패키지로 옮겨도 패키지 선언이 변경되지 않으므로 가져 오기가 작동하지 않습니다. – devang

1

jar 파일의 클래스는 모두 기본 패키지에 포함되어 있습니다.

클래스가 패키지에 포함되어 있으면 직접 액세스 할 수 없습니다.

이 jar 파일이 속한 알고리즘 과정을 수강하고 있는데 이것이 내 프로그램의 특정 원인이 아니기 때문에이 대답을 제출합니다.

+0

답이 맞습니다. 'default' 패키지의 클래스는 얻기 쉬운 다른 패키지의 클래스에 의해. 이것은 참조 라이브러리에있는 것과 아무런 관련이 없습니다. – Sentry

5

나는 algs4.jar 참조 라이브러리를 사용하는 Coursera를 통해 Algorithms 클래스를 사용하고 있습니다.

문제는 : 당신이 겪고있는 문제는 참조 라이브러리가 기본 패키지와있는 당신이 참조 라이브러리에 액세스하는 소스에 위치하고 있다는 점이다

는 없습니다.

솔루션 프로젝트에서

모든 클래스는 그렇지 않은 경우 (기본 패키지에있는)를 참조 라이브러리가 인식되지 않습니다, 기본 패키지에 있어야합니다. 프로젝트 클래스는 src 디렉토리에 있어야하며 .java 파일의 시작 부분에 패키지를 선언해서는 안됩니다. 또한 added the reference libraries to your build path을 입력해야합니다.

0

클래스를 가져 오려면 패키지 된 라이브러리 버전을 다운로드해야합니다. 이 웹 페이지 하단의 Q & 섹션을 참조하십시오. 내 코드를 구성하는 명명 된 패키지를 사용하는 경우 http://introcs.cs.princeton.edu/java/stdlib/

Q. 컴파일러는 더 이상 stdlib.jar에서 라이브러리에 액세스 할 수 없습니다. 왜 안돼?

A. stdlib.jar의 라이브러리는 "기본"패키지에 있습니다.Java에서는 명명 된 패키지에서 기본 패키지의 클래스에 액세스 할 수 없습니다. 명명 된 패키지와 함께 라이브러리를 사용해야하는 경우에는 패키지 된 버전 인 stdlib-package.jar를 사용할 수 있습니다.

0

먼저 BinarySearch를 만들 수 없습니다 (개인 생성자). (가) 정적 방법 BinarySearch.rank(int key, int[] array)

은 둘째 만 기본 패키지

셋째 무엇 Arrays.binarySearch(array, key) 약을에서 BinarySearch에 액세스 할 수 있습니다?

관련 문제