在Netbeans 6.1中运行Ant脚本的问题

时间:2011-02-18 12:47:50

标签: file netbeans ant load

我尝试导入我的蚂蚁脚本。它成功了。但是当我编译它时。我收到了这个错误:

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)

这是我的文件夹结构

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)没有找到“.. \ sounds \ voice.wav”。但是当我从命令行“java SimpleSoundPlayer”尝试它时很好。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

这是因为您使用相对路径加载文件:..\sounds\voice.wav。执行此操作时,您的应用程序非常脆弱,因为它必须从特定目录启动才能正常工作。

我怀疑NetBeans从根文件夹启动您的应用程序,而不是从src或build文件夹启动它。

我建议将voice.wav放入您的源代码中,以便将它与类文件一起复制到构建目录中。然后,您可以使用类加载器加载文件,这要归功于对Class.getResourceAsStream()的调用。

答案 1 :(得分:0)

我想通了! 特别感谢“JB Nizet”。因为他我知道它为什么没有找到wav文件。所以我只是搜索如何更改默认位置(在root中的这种情况)netbeans进行编译(我希望netbeans从“build”文件夹编译)。

密钥位于nbproject / ide-file-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>

所以我只需将<project basedir=".."更改为<project basediir="../build",我希望netbeans可以编译。通过此更改,netbeans将在“build”文件夹中编译该文件。 AND ... WOWWW ...该文件正确运行:D