, поэтому я пытаюсь воспроизвести звук (mp3-файлы) через библиотеку mp3spi. Я должен добавить, что этот проект предназначен для запуска внутри другой программы (например, и надстройки), поэтому у нее нет основных классов, кроме класса debug. Когда я запускаю проект из этого класса отладки, все работает отлично, но при запуске изнутри основной программы (я должен добавить, что надстройка экспортируется как банка и как zip-файл, zip-файл будет загружен в основная программа) Я получаю javax.sound.sampled.UnsupportedAudioFileException. Я думаю, что проблема связана с тем, что надстройка не была правильно подключена к библиотекам, но все баннеры mp3spi включены в папку lib.AudioInputStream не работает после экспорта как jar/zip
Мы используем maven для создания всех надстроек и основной программы, поэтому я также попытался добавить путь к файлу манифеста. (В maven-jar-плагине, как и во многих других переполнениях стека) Как-то это работает для других, но не для меня. Другие также предложили сделать jar runnable, поэтому я добавил класс debug в качестве основного класса и снова попытался, что тоже не сработало.
В любом случае, я совершенно потерялся, так как у меня заканчиваются идеи, чтобы попробовать. Любая помощь приветствуется!
Вот код, который вызывает ошибку снова:
String path = soundFileMap.get(soundId);
try {
inputStream = AudioSystem.getAudioInputStream(new File(path));
... (rest not shown)
А вот исключение:
javax.sound.sampled.UnsupportedAudioFileException: format not supported
at javax.sound.sampled.AudioSystem.getAudioInputStreamImpl(AudioSystem.java:1023) ~[tritonus share-0.3.7-2.jar:?]
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1005) ~[tritonus-share-0.3.7-2.jar:?]
at jundl77.izou.izousound.outputplugin.SoundEngine.playSoundFile(SoundEngine.java:298) [classes/:?]
at jundl77.izou.izousound.outputplugin.SoundEngine.run(SoundEngine.java:382) [classes/:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_20]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_20]
А вот что мой Maven-банку-плагин выглядит следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifestEntries>
<Plugin-Id>${plugin.id}</Plugin-Id>
<Plugin-Class>${plugin.class}</Plugin-Class>
<Plugin-Version>${plugin.version}</Plugin-Version>
<Plugin-Provider>${plugin.provider}</Plugin-Provider>
<Plugin-Dependencies>${plugin.dependencies}</Plugin-Dependencies>
</manifestEntries>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addClasspath>true</addClasspath>
<mainClass>jundl77.izou.izousound.Debug</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
В любом случае, еще раз любая помощь будет очень признательна.
Хорошо, дело в том, что звуковой файл не находится в папке ресурса, звуковой файл должен лежать в любом месте системы. Также входной поток уже представляет собой поток аудиовхода. Также я думаю, что проблема связана с java, так или иначе относящейся к библиотеке javax.sound.sampled по умолчанию, а не к той, которая поставляется с тритоном, может быть, так? И если да, знаете ли вы, как я могу сообщить об этом компилятору? – jundl77
Существует известная проблема с использованием InputStream в качестве входа в getAudioInputStream. Если вы обратитесь к API для AudioSystem.getAudioInputStream, вы увидите, когда в InputStream есть параметр, добавлены тесты на входной файл, например, на маркировку, возможность сброса. Аудиофайлы, как правило, не проходят эти тесты. Входной параметр URL является наиболее надежным, imho. AudioSystem IS javax.sound.sampled. Я рекомендую вам сначала попробовать, исключить это, прежде чем вникать в проблемы Tritonus. –
Ах, спасибо! Оказывается, это ничего не изменило :(Но все в порядке, я использую медиа-медиа javafx и медиаплеер, которые теперь работают, но благодарю за помощь! Один быстрый вопрос, хотя если вы знаете ответ, знаете ли вы, медиаплеер передает звук или все это заполняет? (Другими словами, он относительно лёгкий в системе?) – jundl77