如何在Netbeans Platform项目中使用ServiceLoader添加SPI

时间:2014-11-28 05:00:22

标签: java netbeans wrapper netbeans-platform netbeans-8

我试图在Netbeans 8.0中为我的Netbeans平台项目添加MP3功能。据我所知,这可以使用ServiceLoader和用于MP3编解码器的SPI轻松添加到javax.sound.sampled库中。

所以我下载了MP3 SPI并解压缩,然后在Netbeans中我创建了一个Jar包装模块,其中包含zip文件中的三个jar(一个jar位于zip的根目录中,两个位于{{ 1}})。然后我使需要MP3功能的模块依赖于这个包装器模块。但是当我在这些模块中调用lib/时," MP3"不是其中一种类型(仅#34; WAVE"," AU"和" AIFF")

我错过了什么?

我检查了主jar中AudioSystem.getAudioFileTypes()下的正确文件。

我是否需要在包装模块中重新创建META-INF/services结构?我用于包装器模块的代码库是否有所不同?我是否需要在代码中以某种方式提醒ServiceLoader?

以下是包装器模块的项目元数据:

lib/

1 个答案:

答案 0 :(得分:1)

事实证明SPI工作正常。它可以读取和播放MP3文件。但是AudioSystem.getAudioFileTypes()列出了可写的文件类型,SPI不提供写入MP3文件的能力。它不包含javax.sound.sampled.spi.AudioFileWriter

的提供者