使用PMML4S加载Sklearn模型时遇模块名称无效错误求助
问题:PMML4S导入时模块名称无效错误
我正尝试使用PMML4S工具,将从Sklearn导出的XML格式模型加载到Java项目中进行预测,操作时参考了一篇教程。但运行时出现错误:"Package 'org.pmml4s.model' is declared in module with an invalid name ('pmml4s.2.10')"。使用IntelliJ作为开发IDE,以下是报错的导入语句及项目依赖配置:
报错位置
import org.pmml4s.model.Model;
项目依赖配置
<dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>18.0.2</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>18.0.2</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.pmml4s</groupId> <artifactId>pmml4s_2.10</artifactId> <version>0.9.16</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> </dependency> <dependency> <groupId>com.example</groupId> <artifactId>doctor</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.core</artifactId> <version>6.0.0</version> </dependency> </dependencies>
解决方案
错误核心原因是你引入的PMML4S依赖是Scala 2.10版本的适配包(pmml4s_2.10),Java模块系统不允许模块名称包含.这类特殊字符,导致模块声明无效。
解决步骤:
- 替换PMML4S依赖为Java兼容的版本,或选择更高Scala版本的包(确保版本后缀符合模块命名规则)。推荐替换为
pmml4s_2.13(可根据Maven仓库确认最新稳定版本):
<dependency> <groupId>org.pmml4s</groupId> <artifactId>pmml4s_2.13</artifactId> <version>0.9.16</version> <!-- 或最新稳定版本 --> </dependency>
- 执行Maven的
clean和compile命令,刷新IntelliJ项目依赖后重新运行即可。
如果不需要Scala相关依赖,也可以检查是否存在纯Java版本的PMML4S包,从根源避免版本后缀带来的命名问题。
内容的提问来源于stack exchange,提问作者Hamza Kamran
相关产品推荐
相关产品推荐

