【问题标题】:How do I use Hibernate in a dependency of a Grails project (IntelliJ Module dependency)?如何在 Grails 项目的依赖项(IntelliJ 模块依赖项)中使用 Hibernate?
【发布时间】:2012-03-20 13:58:05
【问题描述】:

我有一个引用 Java 库(作为 IntelliJ 模块依赖项)的 Grail 应用程序。这可行,但是一旦我将 hibernate 添加为 Java 库的依赖项,Grails 将不再运行。

Loading Grails 2.0.1
Error Error executing script RunApp: Provider for javax.xml.parsers.SAXParserFactory cannot be found (Use --stacktrace to see the full trace)

在我的 Java 模块中,我添加了以下内容的休眠:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>4.0.0.Final</version>
</dependency>

我看不出有什么好的办法。 Grails 依赖报告没有显示任何冲突的库。如果 Grails 应用程序中是否安装了 hibernate 插件,则会出现此错误。

请记住,(在这种情况下)Java 库不会通过 BuildConfig.groovy 合并。它被合并为 IntelliJ 模块依赖项。如果我通过 BuildConfig.groovy 将模块合并为 jar,一切正常,但我无法进入 Java 代码。

澄清:

根据 JetBrains 的说法,Java 库作为 IntelliJ 模块依赖项和 BuildConfig.groovy 合并。从命令行执行时,项目可以工作,这只是从 IDE 启动时的问题。

建议?

【问题讨论】:

  • 您是否尝试过从 IntelliJ 之外的命令行运行 grails?这可能与 IntelliJ 传递模块依赖项的方式以及 grails 将其引入的方式存在类路径冲突。
  • 绝对是类路径冲突。如果我从命令行运行,一切正常。当然,如果要调试,从 IDE 运行会有所帮助。

标签: grails intellij-idea


【解决方案1】:

将 Java 库的依赖返回到 BuildConfig.groovy 并使用最新版本的 IDEA:http://confluence.jetbrains.net/display/IDEADEV/IDEA+11.1+EAP。导航应该可以正常工作。

【讨论】:

  • 我更新了问题以反映即使在两个地方都有依赖项,应用程序也不会启动。
【解决方案2】:

经过实验,我偶然发现以下似乎运行良好(至少在 IDEA 11.1 中):

  • 您的 Java 库 JAR 应该从 BuildConfig.groovy(我们使用 Maven,所以我们必须添加本地 Maven 回购)
  • 还将您的模块引用为 Grails 模块的模块依赖项
  • (这很关键)在 grails 项目的运行配置中,取消选中“add --classpath ...”选项

模块依赖给你:

  • 立即了解 Grails 项目中的 Java 类及其方法
  • 支持从 Grails 项目单步执行 Java 代码。

BuildConfig 参考为您提供:

  • 支持 grails 命令,包括 run-app(这是 IntelliJ 在运行/调试项目时启动的方式)

如果您保留 --classpath 选项处于选中状态,那么您会破坏 grails 解决其依赖关系的方式。可能有更好的方法来做到这一点,但我还没有找到。

补充说明

在 grails 和 maven 的交互中存在一个错误,如果 pom.xml 没有更改,这会导致 grails 无法从本地 Maven 3 存储库中提取依赖项。

因此,我们完整的依赖刷新周期如下:

  • 转到顶部
  • mvn 全新安装
  • 在 repo 中找到相关的 POM 文件并触摸它们
  • 返回 grails 应用目录和 grails 刷新依赖项
  • 运行应用程序

只有在上游 Java 库有更新时才需要这样做。

Jet Brains 向 Sergey 致谢,感谢他追踪那个人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多