在Grails Spring Data应用程序中混合java和groovy代码时出错

时间:2014-11-05 12:41:53

标签: java grails neo4j spring-data spring-data-neo4j

我想创建一个包含许多java源文件的Grails应用程序。这些java文件允许我通过spring-data-neo4j访问嵌入式Neo4J图。

(我会使用Grails Neo4J GORM插件,但事实上它不能用于高于Grails 2.3.5的任何东西 - 我使用的是2.4.3 - 甚至在使用2.3时也是如此.5,开发人员提供的示例应用程序在运行时出错。

我想创建一系列表示图中存在的节点的java类,spring-data-neo4j然后允许我在Grails中作为POJO访问(如第二个答案的第1点所述)所以here)。我使用this Spring Data tutorial here作为起点。我已将Person.java和PersonRepository.java类复制到src / java。我正在运行" grails run-app" - 我不希望发生任何事情,只是为了Grails编译java源代码然后正常启动(然后我会将Application.java中的一些代码导入到第3个java类中以实际使用课程)。

但是,我收到以下错误,Grails崩溃了:

  

context.ContextLoader上下文初始化失败   java.lang.NoSuchMethodError:org.springframework.expression.spel.SpelParserConfiguration。(Lorg / springframework / expression / spel / SpelCompilerMode; Ljava / lang / ClassLoader;)V       at java.util.concurrent.FutureTask.run(FutureTask.java:266)       在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)       在java.lang.Thread.run(Thread.java:745)   context.GrailsContextLoaderListener初始化应用程序时出错:org.springframework.expression.spel.SpelParserConfiguration。(Lorg / springframework / expression / spel / SpelCompilerMode; Ljava / lang / ClassLoader;)V   java.lang.NoSuchMethodError:org.springframework.expression.spel.SpelParserConfiguration。(Lorg / springframework / expression / spel / SpelCompilerMode; Ljava / lang / ClassLoader;)V       at java.util.concurrent.FutureTask.run(FutureTask.java:266)       在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)       在java.lang.Thread.run(Thread.java:745)   | Error Forked Grails VM退出时出错   |服务器运行。浏览到http://localhost:8080/

如果我将java示例应用程序作为基本java程序运行(使用" gradle run"来构建和运行它),那么它就像宣传的那样工作。

为了让Java代码在Grails spring数据应用程序中正确编译,我需要做些什么吗?

1 个答案:

答案 0 :(得分:1)

它似乎与依赖项的版本不匹配有关。示例代码使用Gradle spring-boot插件来排序传递依赖项。但是,这不能在我的项目中使用,因为我正在使用gradle-grails插件,它专门禁止使用Java或Groovy插件(而spring-boot插件需要Java插件)。

当我将依赖关系从4.1.1(最新,11月6日14)更改为这两个依赖关系的4.0.6时,错误就消失了:

compile "org.springframework:spring-context:4.0.6.RELEASE"
compile "org.springframework:spring-tx:4.0.6.RELEASE"