首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能从com.sun.media.sound导入?

为什么我不能从com.sun.media.sound导入?
EN

Stack Overflow用户
提问于 2022-01-09 16:05:54
回答 1查看 414关注 0票数 -1

我想使用Java中包含的音频合成器和midi类。MidiSystem.getSynthesizer()返回一个合成器。调试显示实际的类是SoftSynthesizer。所以这个测试通过了:

代码语言:javascript
复制
    @Test
    void defaultSynth() throws MidiUnavailableException {
        Synthesizer synthesizer = MidiSystem.getSynthesizer();
        assertEquals("SoftSynthesizer", synthesizer.getClass().getSimpleName());
    }

但是我无法使用类SoftSynthesizer和接口AudioSynthesizer (它扩展了合成器,SoftSynthesizer实现了什么)。

下面,AudioSynthesizer和SoftSynthesizer被注释掉,因为它们不解析。

代码语言:javascript
复制
   void foo() {
        // Resolved symbol
        Synthesizer s = null;

        // Unresolved symbols
        //AudioSynthesizer as = null;
        //SoftSynthesizer ss = null;
    }

一个不同之处在于,这些库和接口来自不同的包。从com.sun.media.sound导入不起作用。

代码语言:javascript
复制
import javax.sound.midi.Synthesizer;
//import com.sun.media.sound.AudioSynthesizer;
//import com.sun.media.sound.SoftSynthesizer;

但是这两个包似乎都包含在JDK中,那么为什么它很重要(如果是的话)?

在IntelliJ,MacOS上用Java-11和Java-17 (Azul)进行测试.利用Maven。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-09 16:20:14

大多数内部API(自) JDK 9是JDK外部代码无法访问的,请参阅9月260:封装大多数内部API以获得详细信息和可能的解决方案。

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

https://stackoverflow.com/questions/70643111

复制
相关文章

相似问题

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