【问题标题】:Error when mixing java and groovy code in Grails Spring Data application在 Grails Spring Data 应用程序中混合 java 和 groovy 代码时出错
【发布时间】:2014-11-05 12:41:53
【问题描述】:

我想创建一个包含多个 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 中的一些代码到第三个 java 类来实际使用这些类)。

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

context.ContextLoader 上下文初始化失败 java.lang.NoSuchMethodError: org.springframework.expression.spel.SpelParserConfiguration.(Lorg/springframework/expression/spel/SpelCompilerMode;Ljava/lang/ClassLoader;)V 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 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 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) |错误分叉 Grails VM 退出并出现错误 |服务器运行。浏览至http://localhost:8080/

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

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

【问题讨论】:

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


    【解决方案1】:

    这似乎与依赖项的版本不匹配有关。示例代码使用 Gradle spring-boot 插件来整理传递依赖。但是,这不能在我的项目中使用,因为我使用的是 gradle-grails 插件,该插件特别禁止使用 Java 或 Groovy 插件(并且 spring-boot 插件需要 Java 插件)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2016-03-24
      • 2013-10-27
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多