При запуске основной программы HelloWorld с использованием JSAPI выдается сообщение об ошибке «java.lang.NullPointerException at HelloWorld.main (HelloWorld.java:11)»
Ниже приведен код:
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.Locale;
public class HelloWorld {
public static void main(String args[]) {
try {
// 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();
}
}
}
Редактировать: я редактирую свою программу:
import javax.speech.*;
import javax.speech.synthesis.*;
import java.util.Locale;
public class HelloWorld {
public static void main(String args[]) {
try {
// Create a synthesizer for English
SynthesizerModeDesc modeDesc = new SynthesizerModeDesc(null,"general",Locale.US,null,null);
System.out.println(modeDesc);
Synthesizer synth = Central.createSynthesizer(modeDesc);
//Synthesizer synth = Central.createSynthesizer(null);
// Get it ready to speak
System.out.println(synth);
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();
}
}
}
, и она выдает:
javax.speech.synthesis.SynthesizerModeDesc@9304b1
null
java.lang.NullPointerException
at HelloWorld.main(HelloWorld.java:15)
Кажется, что SynthesizerModeDesc работает нормально, но не обнаруживает ни одного движка, так как япопытался передать ноль также в функцию Central.createSynthesizer (т.е. получить механизм по умолчанию), но все равно он возвращает ноль.Я проверил количество двигателей, которые он обнаруживает, но показывает 0.
Пожалуйста, помогите мне !!(