2012-03-20 395 views
0

我有一个引用Java库(作为IntelliJ模块依赖项)的Grail应用程序。这可行,但只要我将hibernate添加为Java库的依赖项,Grails将不再运行。如何在Grails项目(IntelliJ模块依赖项)的依赖项中使用Hibernate?

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依赖关系报告没有显示任何冲突的库。如果hibernate插件安装在Grails应用程序中,则会发生错误。

请记住,(在这种情况下)Java库是 而不是通过BuildConfig.groovy合并。它正在作为一个IntelliJ模块依赖项被合并。如果我通过BuildConfig.groovy将模块作为jar包装,那么一切正常,但我失去了进入Java代码的能力。

澄清:

每JetBrains的人们,Java库被结合既作为的IntelliJ模块的依赖和在BuildConfig.groovy。从命令行执行时,项目起作用,这只是从IDE启动时的一个问题。

对此提出建议?

+0

您是否尝试从IntelliJ以外的命令行运行grails?这很可能是IntelliJ传入模块依赖项时的类路径冲突,以及grails如何引入它。 – cdeszaq 2012-03-20 14:12:25

+0

这绝对是类路径冲突。如果我从命令行运行,一切正常。当然,如果你想调试,它有助于从IDE运行。 – 2012-03-22 15:08:50

回答

0

实验后,我在这似乎(在IDEA 11.1至少)是工作得非常好以下跌跌撞撞:

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

模块依赖为您提供:对于步入从你的Grails项目中的Java代码的Java类,并从Grails项目的方法

  • 直觉意识
  • 支持。

的BuildConfig参考给你:

  • 为Grails的命令,包括运行应用程序的支持(这是运行/调试项目时的IntelliJ如何踢东西了)

如果你离开了--classpath选项,然后你弄糟了grails解决它的依赖的方式。可能有更好的方法来做到这一点,但我没有找到它。

附注

有一个在Grails和行家的导致的Grails如果pom.xml中没有改变的依赖关系,拉不从本地Maven 3个库交互的错误。

因此,我们完全依赖更新周期是这样的:

  • 返回顶部
  • MVN全新安装
  • 发现在回购相关的POM文件,并触摸这些
  • 回的Grails应用程序目录和grails刷新依赖关系
  • 运行应用程序

只有在上游Java库有更新时才需要执行此操作。

帽子提示来自Jet Brains的Sergey,以便跟踪那一个。

相关问题