【问题标题】:Java Modules automatic modules with same packageJava Modules 具有相同包的自动模块
【发布时间】:2020-03-29 20:25:37
【问题描述】:

我使用 Hibernate 开发用于数据库访问的 JavaFX 应用程序,但遇到了一个问题: 我的 module-info.java 中有自动模块来自:

requires org.hibernate.orm.core; ( org.hibernate:hibernate-core:5.4.12.Final)
requires sqlite.dialect; (com.zsoltfabok:sqlite-dialect:1.0)

它们都有相同的包“org.hibernate.dialect”,因为它是被禁止的,我能做些什么来解决这个问题?我当然可以将项目更改为不使用模块,并将其与 jpackage 一起打包为常规 fat jar。但我想继续使用模块化的。 谢谢。

【问题讨论】:

  • 这与 javafx 有什么关系?
  • 您应该更愿意将其报告给库所有者,并且必须为他们计划清理以支持模块。
  • 您也可以将这些 jars 放在类路径而不是模块路径上,这样它们就不会成为自动模块,然后从您的 module-info.java 中删除对它们的引用。

标签: java hibernate javafx java-module java-platform-module-system


【解决方案1】:

sqlite-dialect 使用与hibernate-core 相同的包,这要么是访问外部包私有成员的肮脏(我认为)解决方法,要么如果没有访问包私有成员(我没有检查过)则完全没有必要。您可以创建sql-dialect 的分支并更改包名称(例如,com.zsoltfabok.hibernate.dialect.sqllite),尝试它是否有效,以防它确实使用分支(并创建对原始存储库的拉取请求)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2012-01-25
    • 2018-12-21
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多