2012-11-30 5 views
0

일부 클래스를 넣기 위해 사용자 정의 패키지를 작성하려고하는데,이를 내 프로그램 중 하나로 가져 오려고 시도 할 때 찾을 수 없다고 말합니다. 사용자 정의 java 패키지가 작동하지 않습니다.

내가 컴파일하려고 파일이지만 패키지가이 피보나치 클래스

package project_euler; 
public class Fibonacci { 
    public int getTerm(int n) { 
     if (n < 0 || n > 46) { 
      throw new IllegalArgumentException(); 
     } else { 
      return (n > 1) ? getTerm(n-1) + getTerm(n-2) : n; 
     } 
    } 
} 

이것은

import project_euler.Fibonacci; 

public class test { 
    public static void main(String[] args) { 
     Fibonacci fib = new Fibonacci(); 
     System.out.println(fib.getTerm(10)); 
    } 
} 

을 발견 내가하려고하면 얻을 오류입니다 수 없습니다 말하고있다

test.java:1: error: package project_euler does not exist 
import project_euler.Fibonacci; 
       ^
test.java:6: error: cannot access Fibonacci 
      Fibonacci fib = new Fibonacci(); 
      ^
bad source file: C:\Users\dhout_000\Documents\Project Euler\project_euler\Fibonacci.java 
file does not contain class Fibonacci 
Please remove or make sure it appears in the correct subdirectory of the sourcepath. 
2 errors 

를 컴파일 그리고 내 디렉토리 설정하는 것은

> My Documents 
    > Project Euler 
     - test.java 
     > project_euler 
      - Fibonacci.class 
      - Fibonacci.java 

난 그냥 질수 문제가

+3

왜 패키지 폴더에'.java' 파일이 있습니까? 그것을 밖으로 이동하십시오. 그리고 다시 컴파일하십시오. –

+0

컴파일러를 실행중인 디렉토리는 무엇입니까? 'C : \ Users \ dhout_000 \ Documents \ Project Euler'에서 실행하거나 그에 따라 클래스 경로를 설정해야합니다. 컴파일러가 패키지 구조를 오해하고있는 것 같아서 (처음부터 그렇게 좋지는 않지만 또 다른 질문입니다) 나에게 당신이 다른 곳에서 그것을 실행하고있는 것처럼 보입니다. – ivantod

답변

1

당신이 CLASSPATH 환경 변수가 설정되어 있지 않도록 확인 무엇인지 알아낼.

패키지 계층 구조의 기본 디렉토리에서 코드를 컴파일하고 실행하십시오.

C:\My Documents\Project Euler> javac project_euler\Fibonacci\*.java 

C:\My Documents\Project Euler> java project_euler.Fibonacci.test 

당신은 명시 적으로 javacjava 명령에 대한 -cp 옵션을 사용하여 클래스 경로를 지정할 수 있습니다. 패키지 계층 구조의 기본 디렉토리 (C:\My Documents\Project Euler)가 포함되어 있는지 확인하십시오. 당신이 C:\My Documents\Project Euler에있을 때 당신은 . (현재 디렉토리)를 지정하여이 작업을 수행 할 수 있습니다 :

C:\My Documents\Project Euler> javac -cp . project_euler\Fibonacci\*.java 

C:\My Documents\Project Euler> java -cp . project_euler.Fibonacci.test 

참고 : 일반적인 자바 명명 규칙에 따르면, 당신은 이름에 밑줄 (패키지, 클래스, 메소드 사용하지 말아야합니다 패키지 이름은 소문자 여야하며 클래스 이름은 대문자로 시작해야합니다. 패키지의 이름을 projecteuler.fibonacci (이름도 바꿔야 함)으로 변경하고 test의 이름을 Test으로 바꿉니다.

+0

문제의 소스 코드를 보면'test' 클래스가 기본 패키지에 있고'Fibonacci' 클래스가'project_euler' 패키지에 있음을 알 수 있습니다. 따라서 ** 그의 디렉토리 구조 **는 **의 질문에 정확하고 자신의 소스 코드와 일치합니다. (실제로 나는 그것을 시도하고 잘 작동합니다.) 문제는 다른 곳에서 발생합니다 (또는 질문에 게시 된 내용이 실제 자신의 컴퓨터에 실제로 반영된 것은 아닙니다). – ivantod

+0

'Fibonacci' 패키지가 없습니다. 이것은 클래스의 이름이므로, 그 폴더가 존재할 필요는 없습니다. – ivantod

+0

@ivantod 네 말이 맞아, 나는 신중하게 보지 못했다. 내 대답을 편집했습니다. – Jesper

관련 문제