GluonFX原生镜像跨Windows设备无法识别MIDI设备的问题求助
GluonFX原生镜像跨Windows设备无法识别MIDI设备的问题求助
我现在碰到一个头疼的问题:我开发了一个JavaFX应用,用到了Akai APC mini mk2 MIDI设备,现在想通过GluonFX打包成原生镜像,但在不同Windows设备之间迁移时,MIDI设备的识别出了问题。下面是详细情况:
最小可复现示例(MRE)
Java主类代码
package org.example; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.layout.VBox; import javafx.stage.Stage; import javax.sound.midi.MidiDevice.Info; import javax.sound.midi.MidiSystem; public class FindMidiApp extends Application { @Override public void start(Stage primaryStage) { primaryStage.setTitle("Find Midi"); ListView<String> listView = new ListView<>(); VBox vbox = new VBox(10, listView); try { Info[] midiInfos = MidiSystem.getMidiDeviceInfo(); for (Info info : midiInfos) { listView.getItems().add(String.format("%s - %s", info.getName(), info.getDescription())); } } catch (Exception e) { e.printStackTrace(); } Scene scene = new Scene(vbox, 500, 300); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
Maven POM配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>ListMidi</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>23</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.gluonhq</groupId> <artifactId>gluonfx-maven-plugin</artifactId> <version>1.0.26</version> <configuration> <mainClass>org.example.FindMidiApp</mainClass> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>11</release> </configuration> </plugin> <plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>0.0.6</version> <configuration> <mainClass>org.example.FindMidiApp</mainClass> </configuration> </plugin> </plugins> </build> </project>
module-info.java
module org.example { requires javafx.controls; requires java.desktop; exports org.example; }
开发环境
- 操作系统:Windows 11
- Maven版本:3.9.10
- 打包用GraalVM:graalvm-java23-windows-amd64-gluon-23+25.1-dev
- JavaFX版本:23
- 开发时JDK:OpenJDK 23(IntelliJ中运行用)
- GluonFX Maven插件:1.0.26
本地(电脑A)的正常表现
在电脑A上,我按照GluonFX的Windows平台文档配置后:
- 执行
mvn clean - 执行
mvn gluonfx:runagent,应用启动后能正常识别包括APC Mini在内的所有MIDI设备 - 执行
mvn gluonfx:build生成原生镜像 - 执行
mvn gluonfx:nativerun或者直接从文件夹运行原生镜像,都能正常枚举所有MIDI设备,完全没问题
问题描述
当我把原生镜像迁移到另一台Windows 11设备(电脑B),或者直接在电脑B上重复上述打包流程时:
- 在电脑B上用IntelliJ直接运行应用,或者执行
mvn gluonfx:runagent,都能正常识别所有MIDI设备(包括APC Mini、Microsoft MIDI Mapper、Microsoft GS WaveTable Synth等) - 但只要运行原生镜像(不管是电脑A生成的还是电脑B自己生成的),就只能识别到两个设备:
Gervill – Software Midi SynthesizerReal Time Sequencer – Software sequencer
完全找不到APC Mini和系统自带的那两个MIDI设备
更奇怪的是:电脑B上生成的原生镜像,拿到电脑A上运行,又能正常识别所有MIDI设备。也就是说只有电脑A能正常运行任何原生镜像,电脑B上不管镜像来源,运行都识别不全MIDI设备。
有没有大佬遇到过类似的问题?我应该怎么调整GluonFX的配置,或者GraalVM的原生镜像参数,让打包出来的原生镜像在不同Windows设备上都能正确枚举所有MIDI设备?
内容来源于stack exchange
相关产品推荐
相关产品推荐

