配置环境:win2003 + JDK1.5 + JCreator3.5,把在freetts上下载的包导入JDK Profile中,
具体内容如下:
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\jsapi.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\freetts.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\en_us.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\cmutimelex.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\cmulex.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\cmudict04.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\cmu_us_kal.jar;
D:\TOOLS\sound\freetts-1.2.1-bin\freetts-1.2.1\lib\cmu_time_awb.jar;
运行时总是提示如下信息:
java.lang.NullPointerException
        at HelloWorld.main(speech.java:11)
实在没办法,把以上8个文件直接copy到......\jre\lib\ext中,得到同样的信息。  

解决方案 »

  1.   

    import javax.speech.*;
    import javax.speech.synthesis.*;
    import java.util.Locale;
    class HelloWorld 
    {
    public static void main(String args[]) 
    {
    try {
    Synthesizer test = Central.createSynthesizer(
    new SynthesizerModeDesc(Locale.SIMPLIFIED_CHINESE));
    test.allocate();
    test.resume();
    test.speak("疑问?",null);
    test.deallocate();
    // Create a synthesizer for English
    Synthesizer synth = Central.createSynthesizer(
    new SynthesizerModeDesc(Locale.ENGLISH));
    // Get it ready to speak
    synth.allocate();
    synth.resume();
    // Speak the "Hello world" string
    synth.speakPlainText("Hello, world!", null);
    // Wait till speaking is done
    synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
    // Clean up
    synth.deallocate();

    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }Synthesizer test = Central.createSynthesizer(
    new SynthesizerModeDesc(Locale.SIMPLIFIED_CHINESE));
    以上这行,我改用voice之后就可以,可能是这里分配到了null,所以才会抱错,可找不出原因,有用个这个包的人吗?