You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 04:26:55