Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Netbeans平台项目中使用ServiceLoader添加SPI_Java_Netbeans_Wrapper_Netbeans Platform_Netbeans 8 - Fatal编程技术网

Java 如何在Netbeans平台项目中使用ServiceLoader添加SPI

Java 如何在Netbeans平台项目中使用ServiceLoader添加SPI,java,netbeans,wrapper,netbeans-platform,netbeans-8,Java,Netbeans,Wrapper,Netbeans Platform,Netbeans 8,我正试图在Netbeans 8.0中将MP3功能添加到我的Netbeans平台项目中。我知道可以使用ServiceLoader和用于MP3编解码器的SPI轻松地将其添加到javax.sound.sampled库中 所以我下载并解压缩了它,然后在Netbeans中创建了一个Jar包装器模块,其中包含zip文件中的三个Jar(一个Jar位于zip的根目录下,两个Jar位于lib/下)。然后我让需要MP3功能的模块依赖于这个包装器模块。但是当我在这些模块中调用AudioSystem.getAudioF

我正试图在Netbeans 8.0中将MP3功能添加到我的Netbeans平台项目中。我知道可以使用ServiceLoader和用于MP3编解码器的SPI轻松地将其添加到javax.sound.sampled库中

所以我下载并解压缩了它,然后在Netbeans中创建了一个Jar包装器模块,其中包含zip文件中的三个Jar(一个Jar位于zip的根目录下,两个Jar位于
lib/
下)。然后我让需要MP3功能的模块依赖于这个包装器模块。但是当我在这些模块中调用AudioSystem.getAudioFileTypes()时,“MP3”不是其中的一种类型(只有“WAVE”、“AU”和“AIFF”)

我错过了什么

我检查了主jar中的
META-INF/services
下是否列出了正确的文件

我是否需要在包装器模块中重新创建
lib/
结构?我对包装器模块使用的代码库是否有区别?我是否需要在代码中以某种方式通知ServiceLoader

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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.apisupport.project</type>
    <configuration>
        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
            <code-name-base>org.sil.wrapper.mp3spi</code-name-base>
            <suite-component/>
            <module-dependencies/>
            <public-packages>
                <package>javazoom.jl.converter</package>
                <package>javazoom.jl.decoder</package>
                <package>javazoom.jl.player</package>
                <package>javazoom.jl.player.advanced</package>
                <package>javazoom.spi</package>
                <package>javazoom.spi.mpeg.sampled.convert</package>
                <package>javazoom.spi.mpeg.sampled.file</package>
                <package>javazoom.spi.mpeg.sampled.file.tag</package>
                <package>org.tritonus.share</package>
                <package>org.tritonus.share.midi</package>
                <package>org.tritonus.share.sampled</package>
                <package>org.tritonus.share.sampled.convert</package>
                <package>org.tritonus.share.sampled.file</package>
                <package>org.tritonus.share.sampled.mixer</package>
            </public-packages>
            <class-path-extension>
                <runtime-relative-path>ext/mp3spi1.9.5.jar</runtime-relative-path>
                <binary-origin>release/modules/ext/mp3spi1.9.5.jar</binary-origin>
            </class-path-extension>
            <class-path-extension>
                <runtime-relative-path>ext/tritonus_share.jar</runtime-relative-path>
                <binary-origin>release/modules/ext/tritonus_share.jar</binary-origin>
            </class-path-extension>
            <class-path-extension>
                <runtime-relative-path>ext/jl1.0.1.jar</runtime-relative-path>
                <binary-origin>release/modules/ext/jl1.0.1.jar</binary-origin>
            </class-path-extension>
        </data>
    </configuration>
</project>

org.netbeans.modules.apisupport.project
org.sil.wrapper.mp3spi
javazoom.jl.converter
javazoom.jl.decoder
javazoom.jl.player
javazoom.jl.player.advanced
javazoom.spi
javazoom.spi.mpeg.sampled.convert
javazoom.spi.mpeg.sampled.file
javazoom.spi.mpeg.sampled.file.tag
org.tritonus.share
org.tritonus.share.midi
org.tritonus.share.sampled
org.tritonus.share.sampled.convert
org.tritonus.share.sampled.file
org.tritonus.share.sampled.mixer
ext/mp3spi1.9.5.jar
release/modules/ext/mp3spi1.9.5.jar
ext/tritonus\u share.jar
release/modules/ext/tritonus\u share.jar
ext/jl1.0.1.jar
release/modules/ext/jl1.0.1.jar

结果表明SPI工作正常。它可以读取和播放MP3文件。但是
AudioSystem.getAudioFileTypes()
列出了可写的文件类型,SPI不提供编写MP3文件的功能。它不包括
javax.sound.sampled.spi.AudioFileWriter的提供程序

也许我还应该提到我正在使用Ubuntu,如果这有什么不同的话,尽管我希望最终的可分发版本是跨平台的。