2011-02-18 5 views
0

ant 스크립트를 가져 오려고했습니다. 그리고 성공했습니다. 하지만 내가 그것을 컴파일하면.문제점 Netbeans 6.1에서 Ant 스크립트 실행

root 
+-build(all *.class store here) 
+-images 
+-nbproject(netbeans create it) 
+-sounds(voice.wav where i want to load) 
+-src(all *.java - When i compile. All *.class will store to "build" folder) 
+-build.xml 

내 질문은 클래스 파일 (SimpleSoundPlayer.class) 찾을 수 없습니다가 ".. \는 \의 voice.wav 소리"이유는 내 폴더 구조가

run-selected-file-in-src: 
java.io.FileNotFoundException: ..\sounds\voice.wav (The system cannot find the path specified) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:106) 
     at com.sun.media.sound.WaveFileReader.getAudioInputStream(WaveFileReader.java:205) 
     at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1162) 
     at SimpleSoundPlayer.<init>(SimpleSoundPlayer.java:35) 
     at SimpleSoundPlayer.main(SimpleSoundPlayer.java:12) 
Exception in thread "main" java.lang.NullPointerException 
     at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:89) 
     at SimpleSoundPlayer.main(SimpleSoundPlayer.java:16) 
D:\Windows\My Document\Latihan\Java\allsrc\ch04src\nbproject\ide-file-targets.xml:7: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

입니다 :이 오류가 발생했습니다 . 하지만 명령 행 "java SimpleSoundPlayer"에서 해봤을 때 괜찮습니다.

왜 이런 일이 발생합니까?

답변

0

나는 그림을 그립니다 !!! "JB Nizet"특별 Thx입니다. 왜냐하면 그 사람이 wav 파일을 찾지 못한 이유를 알기 때문입니다. 그래서 난 단지 기본 위치 (루트 에서이 경우) netbeans (나는 "빌드"폴더에서 컴파일 netbeans 원하는)를 변경하는 방법을 검색합니다. 내가 넷빈즈 컴파일 할 위치

의 핵심은 그래서 난 그냥 <project basedir=".."<project basediir="../build"에게 변경 nbproject/IDE-파일 target.xml

root 
+-build(all *.class store here) 
+-images 
+-nbproject(netbeans create it) 
+-sounds(voice.wav where i want to load) 
+-src(all *.java - When i compile. All *.class will store to "build" folder) 
+-build.xml 

<?xml version="1.0" encoding="UTF-8"?> 
<project basedir="../build" name="chap04 - Sound Effects and Music-IDE"> 
    <!-- TODO: edit the following target according to your needs --> 
    <!-- (more info: http://www.netbeans.org/kb/41/freeform-config.html#runsingle) --> 
    <target name="run-selected-file-in-src"> 
     <fail unless="run.class">Must set property 'run.class'</fail> 
     <java classname="${run.class}" failonerror="true" fork="true"> 
      <classpath> 
       <pathelement path="build"/> 
       <pathelement location="."/> 
      </classpath> 
     </java> 
    </target> 

입니다. 이 변경 netbeans "빌드"폴더에서 해당 파일을 컴파일합니다. AND ... WOWWW ... 올바르게 실행 된 파일 : D

0

상대 경로를 사용하여 파일을로드하는 이유는 ..\sounds\voice.wav입니다. 이렇게하면 응용 프로그램이 제대로 작동하기 위해 특정 디렉토리에서 시작해야하기 때문에 매우 취약합니다.

NetBeans가 src 또는 build 폴더에서 실행하는 대신 루트 폴더에서 응용 프로그램을 시작한다고 생각합니다.

소스 파일에 voice.wav를 넣어 클래스 파일과 함께 빌드 디렉토리에 복사 할 것을 권장합니다. 그런 다음 Class.getResourceAsStream()으로 호출하여 클래스 로더를 사용하여 파일을로드 할 수 있습니다.

+0

음 ... 재생할 때의 Thx. 내 "소리"폴더를 루트로 유지하는 또 다른 해결책이 있습니까? 나는 그것을 움직이지 않는 것을 의미한다. 가능합니까? – Kenjiro