Codenameone 在Arch Linux上编码一个媒体文件I/O异常

Codenameone 在Arch Linux上编码一个媒体文件I/O异常,codenameone,media-player,Codenameone,Media Player,我正在开发一个Android应用程序,我几乎已经在Ubuntu上完成了,它正在Arch Linux上获得最后的触动 我已经重新安装了Java和Eclipse,项目运行没有问题,只是媒体文件无法执行,即使类都相同,媒体文件位于同一位置 代码完全相同,只是平台发生了变化。我已经尝试了open-jdk-8和open-jdk-11 这是来自测试项目的代码: Form hi = new Form("Hi World", BoxLayout.y()); Button bu

我正在开发一个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)

在CN1的帮助下,我终于安装了ZuluFx,并在ArchLinux上运行了媒体文件。我发布此信息,以防我的方法可能对其他人有所帮助:

  • 下载ZuluFx表单(我选择安装Java版本11,但还有更多)
  • 将其解压缩到此目录:/usr/lib/jvm/zulu11.45.27-ca-fx-jdk11.0.10-linux_x64
  • 删除/重命名目录/home/user/.codenameone/cef
  • 按照以下指南更改项目的Java版本:打开Eclipse窗口-首选项->安装的JRE->添加->标准VM

CN1文章也是一篇很有帮助的文章。

如果您查看jar中的文件是否正确打包?我已经生成了一个新的jar,不幸的是,问题仍然存在。。。请参阅我更新的queryI,我刚刚生成了一个具有相同问题的测试项目。问题已相应更新。新机器中是否使用/加载了CEF?除了异常之外,您还看到其他打印输出吗?当您尝试使用zulu时,您需要删除CEF目录以强制使用FX管道。此问题应由maven项目支持部门解决。因此,更好的解决方法可能是maven迁移