2013-12-12 1 views
0

Я новичок в FreeTTS, и это моя первая программа. Следующая программа просто считывает переданную строку.ClassNotFoundException в программе FreeTTS Java

Я использую Linux Mint 32-бит, если это имеет значение. Но я извлек jsapi.jar на моем компьютере с Windows днем. Я считаю, что это неважно.

import javax.speech.*; 
import java.util.*; 
import javax.speech.synthesis.*; 

public class Speak 
{ 
    String speaktext; 

    public void dospeak(String speak,String voicename) 
    { 
     speaktext=speak; 
     String voiceName =voicename; 
     try 
     { 
      SynthesizerModeDesc desc = new SynthesizerModeDesc(null,"general", Locale.US,null,null); 
      Synthesizer synthesizer = Central.createSynthesizer(desc); 
      synthesizer.allocate(); 
      synthesizer.resume(); 
      desc = (SynthesizerModeDesc) synthesizer.getEngineModeDesc(); 
      Voice[] voices = desc.getVoices(); 
      Voice voice = null; 
      for (int i = 0; i < voices.length; i++) 
      { 
       if (voices[i].getName().equals(voiceName)) 
       { 
        voice = voices[i]; 
        break; 
       } 
      } 
      synthesizer.getSynthesizerProperties().setVoice(voice); 
      System.out.print("Speaking : "+speaktext); 
      synthesizer.speakPlainText(speaktext, null); 
      synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY); 
      synthesizer.deallocate(); 
     } 
     catch (Exception e) 
     { 
      String message = " missing speech.properties in " + System.getProperty("user.home") + "\n"; 
      System.out.println(""+e); 
      System.out.println(message); 
     } 
    } 

    public static void main(String[] args) 
    { 
     Speak obj=new Speak(); 
     obj.dospeak("Finally It speaks and speaks and speaks","kevin16"); 
    } 
} 

Я получаю это в качестве подарка.

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/speech/freetts/ValidationException 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:190) 
    at javax.speech.Central.registerEngineCentral(Central.java:703) 
    at javax.speech.Central.loadProps(Central.java:775) 
    at javax.speech.Central.availableSynthesizers(Central.java:651) 
    at javax.speech.Central.createSynthesizer(Central.java:553) 
    at Speak.dospeak(Speak.java:16) 
    at Speak.main(Speak.java:47) 
Caused by: java.lang.ClassNotFoundException: com.sun.speech.freetts.ValidationException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 8 more 

Что я могу принять, чтобы не принимать этот подарок.

PS

Я добавил все 4 архивы именно en_us.jar, freetts-jsapi10.jar, jsapi.jar, mbrola.jar

+0

я добавил все 4 архива viz en_us.jar, freetts-jsapi10.jar, jsapi.jar, mbrola.jar –

ответ

1

1) Найти, в которой банки обычно определяют этот класс:
com.sun.speech. freetts.ValidationException

2) Смотрите, если у вас есть фляге

3) Смотрите, если у вас есть правильная версия этой баночки
(открыть его, посмотреть, если файл класса есть)

4) Смотрите, если сосуд находится в пути к классам во время выполнения

+0

: Я решил эту проблему, добавив 'freetts.jar', но теперь у меня возникает другая проблема - свойство' system 'mbrola.base "не определено. Не будет использовать голоса MBROLA. java.lang.NullPointerException'. –

+0

Ну, это говорит, что это свойство не определено. Вы должны это определить, я думаю. Трудно устранять неполадки, так как я не нахожусь на вашей машине. –

+0

Тот же вопрос на 'http: // stackoverflow.com/questions/3975906/troubleshooting-system-property-mbrola-base-is-undefined-will-not-use-mbrola', но никто не ответил в течение 3 лет –