首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级Eclipse和Java后,带有Freetts的Java示例无法正常工作

升级Eclipse和Java后,带有Freetts的Java示例无法正常工作
EN

Stack Overflow用户
提问于 2021-03-09 03:52:44
回答 1查看 78关注 0票数 0

我想把我的eclipse版本升级到最新版本,这也需要我升级java版本。在升级(java 15/eclipse 12-2020)之后,我注意到我在freetts上的简单代码不能在新的配置下工作。

我仍然使用使用java8的旧的eclipse版本,所以我在新旧版本中执行了相同的步骤:创建java项目,添加所有相关的jar文件,并设置简单的demo类。在旧版本中它工作得很好,而在新版本中它抛出了异常:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/speech/freetts/VoiceManager
    at demoPackage.TextSpecchClass.<init>(TextSpecchClass.java:13)
    at demoPackage.TextSpecchClass.main(TextSpecchClass.java:8)
Caused by: java.lang.ClassNotFoundException: com.sun.speech.freetts.VoiceManager
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 2 more

它似乎基本上找不到jars文件,但我不确定原因,以及它是否与新的eclipse版本或java升级有关。

*还请注意,在其他示例中,我使用了sqllite的外部jar,它起作用了,因此它似乎不会发生在任何jar中,但与freetts有关的特定内容

代码语言:javascript
复制
jars: (possible some are redundant...):
cmu_time_awb.jar
cmu_us_kal.jar
cmudict04.jar
cmulex.jar
cmutimelex.jar
en_us.jar
freetts.jar
freetts-jsapi10.jar
jsapi.jar
mbrola.jar


package demoPackage;

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class TextSpecchClass {
    public static void main(String[] args) {
        new TextSpecchClass("Hello worlds");
    }
    public TextSpecchClass(String words) {  
        System.setProperty("freetts.voices",
           "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
        Voice voice = VoiceManager.getInstance().getVoice("kevin16");
        if (voice != null) {
            voice.allocate();// Allocating Voice
            try {
                voice.setRate(190);// Setting the rate of the voice
                voice.setPitch(150);// Setting the Pitch of the voice
                voice.setVolume(3);// Setting the volume of the voice
                voice.speak(words);// Calling speak() method
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        } else {
            throw new IllegalStateException("Cannot find voice: kevin16");
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-03-09 06:41:32

最近的Eclipse版本至少需要Java 11 JDK才能运行Eclipse,但是您可以使用旧版本的JDK在Eclipse中编译/运行项目。确保同时拥有Java 15和Java 8 JDK。将Eclipse设置为与Java15JDK一起运行,并将您的项目配置为使用"JavaSE-1.8“执行环境,并确保Java8JDK在该执行环境的已安装JDK列表中。

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

https://stackoverflow.com/questions/66536250

复制
相关文章

相似问题

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