首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassNotFoundException在FreeTTS Java程序中的应用

ClassNotFoundException在FreeTTS Java程序中的应用
EN

Stack Overflow用户
提问于 2013-12-12 09:05:21
回答 1查看 1.9K关注 0票数 1

我是FreeTTS的新手,这是我的第一个program.The,下面的程序只是读取一个传递的字符串。

我使用Linux 32位,如果我一天前在我的windows机器上提取jsapi.jar的话,我相信这不重要。

代码语言:javascript
复制
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");
    }
}

我收到这个作为礼物。

代码语言:javascript
复制
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.jarfreetts-jsapi10.jarjsapi.jarmbrola.jar

EN

回答 1

Stack Overflow用户

发布于 2013-12-12 09:07:18

1)找到这个类通常定义在哪个jar中:

com.sun.speech.freetts.ValidationException

2)看看你有没有罐子

3)看看你是否有这个罐子的正确版本

(打开它,看看类文件是否在那里)

4)查看jar在运行时是否在类路径中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20539122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档