Как использовать ServiceLoader в проекте платформы Netbeans для добавления SPI

1

Я пытаюсь добавить возможности MP3 в проект Netbeans Platform в Netbeans 8.0. Я понимаю, что это можно легко добавить в библиотеки javax.sound.sampled, используя ServiceLoader и SPI для кодеков MP3.

Поэтому я загрузил MP3 SPI и распаковал его, затем в Netbeans я создал модуль оболочки Jar с тремя банками, которые были в zip файле (одна банка была в корне zip, а две были под lib/). Затем я сделал модули, которые нуждаются в функциях MP3, зависит от этого модуля-обертки. Но когда я называю AudioSystem.getAudioFileTypes() в этих модулях, "MP3" не является одним из типов (только "WAVE", "AU" и "AIFF")

Что мне не хватает?

Я проверил, что правильные файлы перечислены в 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>
  • 0
    Возможно, я должен также упомянуть, что я использую Ubuntu, если это имеет значение, хотя я хочу, чтобы окончательный дистрибутив был кроссплатформенным.
Теги:
netbeans
wrapper
netbeans-8
netbeans-platform

1 ответ

1

Оказывается, SPI работает нормально. Он может читать и воспроизводить MP3 файл. Однако AudioSystem.getAudioFileTypes() перечисляет типы файлов, которые можно перезаписывать, и SPI не предоставляет возможность записи файлов MP3. Он не включает поставщика для javax.sound.sampled.spi.AudioFileWriter

Ещё вопросы

Сообщество Overcoder
Наверх
Меню