2012-01-29 2 views
3

저는 프로그래밍 세계에 익숙하지 않고 파일에서 하나의 숫자를 읽고 출력하는 간단한 프로그램을 만들고자합니다. 코드에서 모든 것을 올바르게 설정했다고 생각합니다. 프로그램에서 파일을 읽도록하려면 .txt 파일의 위치와 관련하여 특별한 작업을 수행해야합니까?Java 이클립스 오류 '소스를 찾을 수 없습니다.'

package pack; 

import java.util.*; 

import java.io.*; 

public class Ch2_PrExercise17 { 

    public static void main(String[] args) 
      throws FileNotFoundException{ 

     Scanner inFile = new Scanner(new FileReader("inData.txt")); 
     int num1; 
     num1 = inFile.nextInt(); 
     System.out.println(num1); 
    } 
} 

예외는 다음과 같습니다.

Exception in thread "main" java.io.FileNotFoundException: inData.txt (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at pack.Ch2_PrExercise17.main(Ch2_PrExercise17.java:8) 
+0

클래스 파일 'Ch2_PrExercise17'과 동일한 디렉토리에 있어야합니다. –

+2

"소스를 찾을 수 없습니다"라는 오류 메시지가 전부 표시되면 빌드 경로를 확인하십시오. 프로젝트 (왼쪽)에서 마우스 오른쪽 버튼을 클릭하고 "빌드 경로 구성"항목을 선택하고 실제 소스 파일 (CH2_PrExercise17.java)이 소스 디렉토리에 있는지 확인하십시오. – bdares

+0

또한 FileReader에서 DEBUG 문을 볼 수있는 위치까지 로깅 수준을 높게 설정해야합니다. FileReader가 파일이 어디에 있는지 생각할 수있는 좋은 기회가 있습니다. 그러면 파일을 재배치하거나 파일 경로를 조정하는 데 도움이됩니다. :) – jmort253

답변

2

이클립스 정말 그때는 뭔가의 소스 코드에 대해 (그 시점에서) 이야기 "소스를 찾을 수 없습니다"라는됩니다.

Eclipse에서 클래스를 실행하도록 관리하는 경우 Eclipse는 소스 코드가 어디에 있는지 알 수 있도록 Eclipse를 컴파일 할 수있었습니다. 그래서 그것은 다른 것의 소스 코드 여야합니다. 내 생각에 표준 Java 클래스 라이브러리의 소스 코드를 찾을 수 없다는 것은 아마도 Eclipse가 JDK 설치가 아닌 JRE 설치에서 실행 중임을 의미합니다.

그것은 또한 빌드 문제가 될 수있다 (내 이론은 ... 텍스트가 예외 스택 트레이스에 포함되어 다음 "을 (를) 찾을 수 없습니다 소스"올바른 경우)하지만 난 그것을 의심 수업을 얻지 못한 경우 때문에 이클립스에서 소스 파일을 볼 때 오류 마커가 표시되고 Eclipse를 실행하려고하면 이클립스가 불평 할 것이다. 소스 파일이 잘못된 디렉토리에 있으면 이클립스는 또한 불평 할 것이다.


문제의 두 번째 부분은 "inData.txt" 파일을 찾기 위해 응용 프로그램을 얻는 것입니다. 간단해야합니다. 상대 경로 이름으로 파일을 열려고하면 Java 라이브러리는 응용 프로그램의 "현재 디렉토리"에 상대적인 경로 이름을 확인하려고 시도합니다. 기본적으로 Eclipse에서 응용 프로그램을 실행할 때 Eclipse를 시작할 때 쉘이 있던 디렉토리가됩니다. 예 :

$ cd /home/josh/somedir 
$ eclipse & 

... 그리고 현재 현재 디렉토리는 "/ home/josh/somedir"이어야합니다. 이클립스를 실행하기 전에 올바른 하나

  • 디렉토리를 변경 : 기본 현재 디렉토리를 잘 작성하지 않은 경우

    , 당신은 옵션의 수를 포함하여이있다.

  • Eclipse의 "실행 구성"패널을 사용하여 응용 프로그램의 실행 구성을 선택하고 실행 프로그램의 현재 디렉토리 설정을 변경하십시오.
  • 소스 코드의 상대 경로 이름을 파일의 올바른 절대 경로 이름으로 변경하십시오.

FOLLOW-UP '알 수없는 소스 "메시지가 JVM이 (이클립스되지 않음)을 의미

Exception in thread "main" java.io.FileNotFoundException: inData.txt (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileReader.<init>(Unknown Source) 
    at pack.Ch2_PrExercise17.main(Ch2_PrExercise17.java:8) 

는 전체 스택 트레이스를 생산하는 데 필요한 정보를 찾을 수 없습니다. 디버그 정보가 제거 된 "rt.jar"파일을 사용하여 실행중인 것으로 보입니다. 이 문제는 무시할 수 있지만 문제를 해결하려면 JVM이 사용중인 이유와 "rt.jar"에 디버그 정보가없는 이유를 조사해야합니다.

진짜 문제는 FileNotFoundException 예외이며, 내 진단이 위와 같습니다. "현재 디렉토리"는 해결하기 위해 상대 경로 이름에 필요한 것이 아닙니다. 가능한 해결 방법은 위의 내용을 참조하십시오.

관련 문제