Gluon Mobile iOS:TextField与Spinner引发FXMLLoader加载异常
解决方案
1. 对齐Gluon Charm与GluonFX插件版本
部分旧版Gluon Charm控件在iOS原生编译时存在依赖缺失问题,需确保Charm依赖和GluonFX插件版本兼容,建议升级到最新稳定版:
- Maven依赖配置示例:
<dependency> <groupId>com.gluonhq</groupId> <artifactId>charm-glisten</artifactId> <version>6.2.0</version> </dependency>
- 对应GluonFX插件配置:
<plugin> <groupId>com.gluonhq</groupId> <artifactId>gluonfx-maven-plugin</artifactId> <version>1.0.17</version> </plugin>
2. 替换为JavaFX原生控件
若Charm控件存在iOS兼容性问题,可改用JavaFX原生控件实现整数输入:
- TextField整数限制:通过文本过滤器只允许输入数字
TextField integerField = new TextField(); integerField.setTextFormatter(new TextFormatter<>(change -> { return change.getControlNewText().matches("\\d*") ? change : null; }));
- Spinner整数配置:直接使用整数类型的ValueFactory
Spinner<Integer> integerSpinner = new Spinner<>(0, 100, 0); integerSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, 100, 0));
3. 检查FXML控件全类名与命名空间
确保FXML中控件的全类名和命名空间正确,避免类解析失败:
<!-- Charm TextField正确写法 --> <charm:TextField xmlns:charm="http://javafx.com/javafx/8.0.171/com.gluonhq.charm.glisten.control"/> <!-- JavaFX原生TextField写法 --> <TextField xmlns="http://javafx.com/javafx/17"/>
注意命名空间版本要与使用的JavaFX版本匹配。
4. 确保资源被原生构建包含
在GluonFX插件配置中添加资源规则,保证FXML等文件被正确打包:
<plugin> <groupId>com.gluonhq</groupId> <artifactId>gluonfx-maven-plugin</artifactId> <version>1.0.17</version> <configuration> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.fxml</include> </includes> </resource> </resources> </configuration> </plugin>
5. 获取详细错误日志
执行原生运行时添加verbose参数,定位具体类加载失败原因:
mvn gluonfx:nativerun -Djavafx.verbose=true
内容的提问来源于stack exchange,提问作者Sion S
相关产品推荐
相关产品推荐

