2014-01-17 6 views
0

자바는 항상 여기Eclipse는

java.io.FileNotFoundException: \Beep.wav (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 bombTimer.BombTimer.<init>(BombTimer.java:36) 
at bombTimer.BombTimer.main(BombTimer.java:87) 

를 반환 내가 클래스 패스에게 그것은 아무것도 변경하지 않는 만 시간을 설정 한 내가

import sun.audio.*; 
import javax.swing.*; 
import javax.swing.text.BadLocationException; 
@SuppressWarnings("serial") 
public class BombTimer extends JFrame implements ActionListener { 

private AudioStream audioStream1=null; 
private AudioStream audioStream2=null; 
public BombTimer(){ 
    try { 
     audioStream1=new AudioStream(new FileInputStream("/Beep.wav")); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

을 사용하고 코드의 .WAV 파일을 찾을 수 없습니다
텍스트를 복사하고 명령 줄에서 컴파일하여 작동합니다.

완전히 새로운 프로젝트를 만들고 모든 텍스트를 복사 할 때 문제가 사라졌습니다.

나는 여전히 만족하지 해요,하지만 지금은 실행

+1

'비프 .wav'가 아닌가요? 파일이 올바른 폴더에 있는지 확실합니까? 어떤 OS를 실행하고 있습니까? 그거 ... [여기에 1000 가지 넣으세요?] 내가 말하고자하는 것은 디렉토리 구조 등을주지 않으면 대답 할 수있는 방법이 없다는 것입니다. – Doorknob

+0

파일은 \ Workspace \ BombTimer.I에 있습니다. Eclipse에서 JRE7을 모두 실행합니다. –

+0

문제가 있습니다. '/ Workspace/BombTimer/src /'에 있어야합니다. – Doorknob

답변

1

우리가 가진 경로를 시작할 때 상대 경로가 아니기 때문에 내가 생각 OK/그것은 절대 경로로 간주됩니다 당신이 당신의 파일 킵을 찾으려면 이렇게 귀하의 자바 파일과 동일한 패키지에있는 파일을 확인하고, 파일이 bin 폴더에 복사되었는지 확인하십시오. 프로젝트를 빌드 할 때이 명령문을 작성하여 파일에 액세스 할 수 있습니다.

audioStream1=new AudioStream(new FileInputStream("Beep.wav")); 
+0

시도해도 여전히 작동하지 않습니다. –

1

파일을 src /에 있지만 일반 프로젝트 폴더에 넣지 마십시오.

+0

나는 주사위를 만들지 않았다. –

+0

이러한 변경 사항을 한 번 더 확인한 후에 프로젝트> 빌드에서 프로젝트를 다시 빌드해야 할 수도 있습니다. http://stackoverflow.com/questions/1929415/where-do-you-put-input-file-in-eclipsejava-in-order-to-read-it-from-console-co –

0

File 개체를 사용하면 클래스 경로에서 읽지 않습니다. 따라서 .wav 파일을 프로젝트 루트 폴더에 보관해야합니다. 예를 들어;

c:\javaproj\Beep.wav 

또는

당신은 당신의 코드에서 파일의 절대 경로를 언급 할 필요가있다.

try { 
    audioStream1=new AudioStream(new FileInputStream("c:/javaproj/src/Beep.wav")); // location of file 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

이것을 내보낼 필요가 있습니다. JAR과 그것을 이메일로 ... –

1

클래스 경로에서 InputStream으로 wav를로드 해보십시오.

몇 가지 방법이 있지만 작동 할 수 있습니다.

audioStream1=new AudioStream(this.getClass().getClassLoader().getResourceAsStream("Beep.wav")); 

그것은 당신이 파일 시스템에 대한 절대 경로를 제공 한 일처럼 보이는, 그래서 당신은 당신의 코드를 작성 한 방법은, 클래스 경로가 완전히 무시되고있다.