#codenameone #media-player
#codenameone #медиаплеер
Вопрос:
Я разрабатываю приложение для Android, которое я почти закончил на Ubuntu, и которое получает последний штрих в Arch Linux.
Я переустановил Java и Eclipse, и проект работает без проблем, за исключением того, что медиафайлы не могут быть выполнены, даже если все классы одинаковые, а медиафайлы находятся в одном и том же месте.
Код точно такой же, изменилась только платформа. Я пробовал как с open-jdk-8, так и с open-jdk-11.
Это код из проекта тестирования:
Form hi = new Form("Hi World", BoxLayout.y());
Button buttonSound = new Button("Play");
buttonSound.addActionListener(l -> {
InputStream inputStream = Display.getInstance().getResourceAsStream(getClass(), "/children-hooray.wav");
try {
Media media = MediaManager.createMedia(inputStream, "audio/wav");
media.play();
} catch (IOException e) {
e.printStackTrace();
}
});
hi.add(buttonSound);
hi.show();
При загрузке консоли вывод:
Adding CEF to classpath
Found theme.css file. Watching for changes...
CSS> Retina Scale: 1.0
CSS> Using stateful mode. Use -help flag to see options for new stateless mode.
CSS> Looks like this CSS file needs CEF on classpath... adding it now, and retrying...
CSS> Adding CEF to classpath
Retina Scale: 1.0
CSS> Retina Scale: 1.0
CSS> Using stateful mode. Use -help flag to see options for new stateless mode.
CSS> Updating merge file /home/rainer/eclipse-workspace/A1_Test_En/css/theme.css.merged
CSS> Starting watch thread to watch [/home/rainer/eclipse-workspace/A1_Test_En/css/theme.css]
CSS> Compiling /home/rainer/eclipse-workspace/A1_Test_En/css/theme.css.merged to /home/rainer/eclipse-workspace/A1_Test_En/src/theme.res
CSS> File has not changed since last compile.
CSS> CSS file successfully compiled. /home/rainer/eclipse-workspace/A1_Test_En/src/theme.res
и трассировка стека такова :
Adding CEF to classpath
Retina Scale: 1.0
java.io.IOException
at com.codename1.impl.javase.JavaSEPort.createMedia(JavaSEPort.java:8506)
at com.codename1.ui.Display.createMedia(Display.java:3597)
at com.codename1.media.MediaManager.createMedia(MediaManager.java:308)
at com.codename1.media.MediaManager.createMedia(MediaManager.java:226)
at com.mycompany.myapp.Main.lambda$1(Main.java:65)
at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349)
at com.codename1.ui.Button.fireActionEvent(Button.java:687)
at com.codename1.ui.Button.released(Button.java:728)
at com.codename1.ui.Button.pointerReleased(Button.java:835)
at com.codename1.ui.LeadUtil.pointerReleased(LeadUtil.java:153)
at com.codename1.ui.Form.pointerReleased(Form.java:3817)
at com.codename1.ui.Component.pointerReleased(Component.java:4710)
at com.codename1.ui.Display.handleEvent(Display.java:2359)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1244)
at com.codename1.ui.Display.mainEDTLoop(Display.java:1162)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Комментарии:
1. Если вы посмотрите в jar, правильно ли упакован там файл?
2. Я сгенерировал новую банку, и, к сожалению, проблема сохраняется… пожалуйста, ознакомьтесь с моим обновленным запросом
3. Я только что создал тестовый проект, который имеет ту же проблему. Вопрос был соответствующим образом обновлен.
4. Используется ли / загружается ли CEF на новой машине? Видите ли вы другие распечатки, кроме исключения?
5. При попытке использования zulu вам необходимо удалить каталог CEF, чтобы принудительно запустить конвейер FX
Ответ №1:
С помощью CN1 мне наконец удалось установить ZuluFx и медиафайлы, работающие в Arch Linux. Я публикую это на случай, если мой подход может быть полезен другим:
- Загрузите форму ZuluFx здесь (я решил установить Java версии 11, но есть еще много других);
- Извлеките его в этот каталог: /usr/lib/jvm/zulu11.45.27-ca-fx-jdk11.0.10-linux_x64;
- Удалите/ переименуйте каталог /home/user/.codenameone/cef;
- Измените версию Java для проекта, следуя приведенному здесь руководству: Откройте окно Eclipse — Настройки -> Установленная JRE -> Добавить -> Стандартная виртуальная машина
Эта статья CN1 также полезна для чтения.
Комментарии:
1. Эта проблема должна быть решена службой поддержки проекта maven. Таким образом, лучшим обходным путем может быть миграция maven