2009-03-21 5 views
0

구성 요소를 사용하여 프로그램을 작성하는 자바 할당이 있습니다. 선생님은 Eclipse를 사용하여 계산기를 만드는 데 사용할 JAR을 제공했습니다. JAR에는 2 개의 클래스가 있습니다. JAR을 가져 와서 클래스를 사용해야합니다.가져온 모듈에 보이지 않는 생성자가 있습니까?

은 내가 JAR 가져옵니다

import SWEB401_HW1.NumericOperation; 

을하지만이 클래스의 객체를 생성 할 때 생성자가 표시되지 않기 때문에, 그것은 나에게 오류를 제공합니다. 계산기를 만들기 위해 "NumericOperation"클래스를 사용하려면 어떻게해야합니까?

답변

0

질문을 올바르게 이해하면 아무 것도 가져올 필요가 없습니다. JAR 파일에서 클래스에 액세스하는 방법이 아닙니다. 대신 Java 클래스 패스에 JAR 파일의 경로를 추가해야합니다. 당신이하는 일은 당신의 운영체제에 달려 있습니다. 또는 JAR 파일을 자신의 프로그램의 클래스 파일이있는 디렉토리로 추출 할 수 있습니다. JAR 파일은 다른 확장자를 가진 단지 ZIP 파일입니다, 그래서 당신은 당신이 일반적으로 ZIP 파일을 여는 데 사용할 무엇이든 사용하여 추출 할 수 있습니다, 또는 당신이 jar 도구는 JDK에 포함되어 사용할 수 있습니다 필요가 없습니다

jar xf SWEB301_HW1.jar 
+0

나는 cmd 명령을 사용하는 방법을 모른다. 나는 무언가를해야하고, 그 다음에 cmd를 사용해야한다. 왜냐하면 내가이 명령을 쓸 때 메시지가 나옵니다 msg : 항아리가 인식되지 않습니다 .... –

+0

아무 것도 추출 할 필요가 없습니다. 나는 해결책이 탄력적 인 대답에 놓여있을 것이라고 확신한다. – Seb

+0

물론 아무것도 추출 할 필요가 없습니다. 나는 거기에 있다고 주장하지 않았지만, 그것이 OP가 가지고있는 것으로 의심되는 문제를 해결하는 한 가지 방법입니다. –

0

무엇이든 추출합니다. 클래스 경로에 JAR을 추가하여 프로젝트에서 JAR을 사용해야합니다.

Eclipse를 사용하고 있습니까? 그렇다면 프로젝트 속성 -> java 빌드 경로 -> 라이브러리 -> 외부 JAR 추가 -> jar를 검색하여 추가 할 수 있습니다.

그런 식으로 프로젝트의 모든 JAR 클래스를 얻을 수 있습니다.

+0

나는 이미이 단계를 수행하지만 여전히 클래스의 메서드를 사용할 수 없다. –

+0

그런 다음 나는 springify 주석을 따르도록 제안한다. 그것은 내가 당신에게 지금 말하려고했던 것을 거의 다룹니다. – Seb

3

귀하가 제공 한 정보를 통해이 정보가 할당 된 것으로 간주되어서 무엇을 검색 할 지에 대한 몇 가지 힌트 만 제공 할 수 있습니다.

이 프로젝트가 올바르게 설정되어 있다고 가정하면, 당신은 여전히 ​​NumericOperation 정적 팩토리 메소드가있을 수 ...

  • ... NumericOperation의 인스턴스를 만들 수 없습니다.
  • ... "다른 클래스"NumericOperation 인스턴스에 대한 공장 역할을 할 수
  • ... NumericOperation 사실이 될 수는

EDIT 구현해야하는 인터페이스 또는 추상 클래스 : 하지 마십시오을 그것을 전부 버리고 싶다면, 나는이 막연한 것을 유지할 것이다. NumericOperation 실제로 추상 클래스 것으로 보인다으로, 같은 클래스를 작성하려고 다음과 당신이 IDE의 불평을 중지해야 할 일을 참조 : 또한 자바 튜토리얼의 상속 부분을 살펴 가질 수

public class MyNumericOperation extends NumericOperation {} 

here.

+0

제가 생각하기에, NumericOperation은 추상 클래스입니다.하지만 생성자를 사용하지 않고 어떻게 사용합니까? –

+0

아, 이제 추상 클래스가 무엇을 의미하는지 이해합니다. 이전에이 단계를 수행했는데 다음 메시지가 표시됩니다. NumericOperation() 암시 적 슈퍼 생성자가 표시되지 않습니다. 명시 적으로 앤서 생성자를 호출해야합니다. –

+0

수퍼 클래스의 정의 된 생성자 중 하나를 super (...)로 호출해야합니다. NumericOperation을보고 거기에 정의 된 생성자를 확인하십시오. –

2

생성자가 표시되지 않으면 비공개 생성자를 호출하려고합니다. NumericOperation 클래스의 코드 또는 java 문서를보고 공개 된 생성자를 찾으십시오. 대부분의 경우 인자가없는 생성자를 호출하고 있으며 클래스는 초기 값이 필요하기 때문에 클래스를 숨긴다.예를 들어

: 코드를 호출하면 시도

public class MyClass { 
    private MyClass() { 
    // Don't let callers instantiate me without args! 
    } 

    public MyClass(int initialValue) { 
    // create a new object with initialValue 
    } 
} 

경우이 :

MyClass obj = new MyClass(); 

당신이 게시 한 오류가 발생합니다. 대신 새로운 MyClass (int)를 호출해야합니다.

+0

개인 생성자를 추가 할 필요가 없습니다. 기본 생성자는 다른 생성자가없는 경우에만 Java에 의해 추가됩니다. 따라서 인수가있는 생성자가 추가되고 (no-args 생성자가 추가되지 않은 경우) 인수를 제공해야합니다. –

1

오류가 발생한 경우 onstructor가 "표시되지"않는다고 말하면 java (public, provate, protected 및 package)의 가시성에 대해 이야기합니다.

좋은 결과입니다. 즉, 클래스를 성공적으로 가져 왔고 클래스 경로에 있다는 의미입니다. 당신의 classpath와 속이는 것에 관해 말하는 다른 모든 대답을 무시하십시오. - 식식이 당신을 위해 그것을 돌보고 있습니다. 추측에서

, 선생님 F * 사용해야하는 생성자에 "공개"선언을 넣어하지 않은 을 cked.

이 문제를 해결하려면 작성중인 클래스가 SWEB401_HW1 패키지에 있어야합니다.

eclipse에서 가장 쉬운 방법은 네비게이터에서 자바 파일을 마우스 오른쪽 버튼으로 클릭하고 SWEB401_HW1 패키지로 "이동"하여 "리팩터링"하는 것입니다.

0

강사는 당신에게 Javadoc과, API를 목록이나 이런 것들에 대한 소스보기 준 경우

  • 공공 정적 NumericOperation()
  • 공공 NumericOperation()
  • 공공 NumericOperation()

첫 번째 클래스는 모든 클래스에있을 수 있지만 NumericOperation 클래스에있을 가능성이 큽니다.

두 번째 매개 변수를 사용하는 NumericOperation 클래스의 생성자가됩니다. 클래스가 생성자를 제공하면 컴파일러는 인자없는 인자를 생성하지 않는다는 것을 기억하십시오.

마지막 클래스는 다른 클래스에 있습니다 (메소드를 호출하기 위해 인스턴스가 필요하므로).

컴파일러가 뱉어 낸 정확한 오류 메시지를 나중에 게시하면 내용이 거친 내용보다 더 유용합니다. 일부 이전 답변 계약에서

0

, 당신은 당신이 실행하거나 컴파일 할 때 그래서 것을 잊지 않도록

java(c) -cp myjar.jar:. etc

내가 보통 현재 디렉토리를 포함 할 클래스 경로를 통해 사용할 수있는 용기가 필요 내 코드가 경로에 있습니다.

가져올 때 Java 패키지 이름을 사용해야합니다. zip 프로그램에서 jar 파일을 열고 필요한 클래스 파일 경로를 지정한 다음 "import path;"를 입력하십시오. 여기서 폴더 분리 기호를 '.'로 대체합니다.