java - jibx 与 hibernate 5 编码

标签 java hibernate spring-boot jibx

我们正在从 hibernate 5(从 v3)和 spring boot 1.5 升级我们的技术堆栈,特别是当我们对 hibernate 和 jibx 编码使用相同的域对象时面临 hibernate 和 jibx 编码问题。

def compileJibx() {
    ant {
        taskdef(name: 'bind',
            classname: 'org.jibx.binding.ant.CompileTask',
            classpath: configurations.jibx.asPath)

        bind(binding: "${projectDir}/src/main/resources/jibx-binding.xml", verbose: 'false') {
            classpath {
                pathelement(path: "${projectDir}/build/classes/main")
            }
        }
}
}

此 jibx 编译任务在compileJava 步骤之后执行。

使用以下依赖项

    jibx group: 'org.apache.bcel', name: 'bcel', version:'6.0'
    jibx group: 'org.jibx', name: 'jibx-run', version:'1.1.5'
    jibx group: 'org.jibx', name: 'jibx-extras', version:'1.1.5'
    jibx group: 'org.jibx', name: 'jibx-bind', version:'1.1.5'
    jibx group: 'xmlpull', name: 'xmlpull', version:'1.1.4'
    jibx group: 'xpp3', name: 'xpp3', version:'1.1.4c'
    jibx group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version:'1.0.2.Final'
    jibx group: 'javax.xml.bind', name: 'jaxb-api', version:'2.2.11'

在 gradle 构建之后,我看到 jibx 类已在 jar 文件中正确构建。 但是当我启动应用程序时,由于以下错误,jibx 编码失败。

[2019-09-18 10:30:40.537] [BDSPUSD00000582] [ERROR] [com.abc.UnhandledExceptionHandler] [{Correlation-ID=skdfhjwe39850jkhfsd}] - Unhandled exception
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.VerifyError: Expecting a stackmap frame at branch target 26
Exception Details:
  Location:
    com/abc/jibx/domain/JibxDomain.JiBX_ABC_marshal_6_0(Lorg/jibx/runtime/impl/MarshallingContext;)V @19: ifnonnull
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0x0000000: 2b2a b600 462b 2b06 1248 b600 4c57 2ab6
    0x0000010: 0050 59c7 0007 57a7 0007 2bb6 0056 0612 
  ...
Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 26
Exception Details:
  Location:
    com/abc/jibx/domain/JibxDomain.JiBX_ABC_marshal_6_0(Lorg/jibx/runtime/impl/MarshallingContext;)V @19: ifnonnull
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0x0000000: 2b2a b600 462b 2b06 1248 b600 4c57 2ab6
    0x0000010: 0050 59c7 0007 57a7 0007 2bb6 0056 0612

我的编译或构建步骤有什么问题吗? 有人可以提供一些与下面的堆栈配合良好的工作示例吗?

Spring引导1.5, hibernate 5, 吉布克斯1.15, Java8

最佳答案

我已经通过升级版本的 bcel/jibx 修复了这个问题。

bcel-6.1
jibx-1.3.1

关于java - jibx 与 hibernate 5 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57996049/

相关文章:

java - org.springframework.data.mapping.model.MappingInstantiationException : Failed to instantiate object with new boolean field 问题

java - Spring 批量测试 - 无法 Autowiring 。未找到 'JobLauncherTestUtils' 类型的 beans

java - 无法使用spring下载文件没有错误但代码不起作用

java - Duke CSVReader ArrayIndexOutOfBoundsException

java - 如何使用 Hibernate 选择 block 中的 BLOB 并写入文件?

java - Hibernate 查询实体中的字符串列表

java - 将PreparedStatement批处理与Statement批处理混合使用,可能吗?

java - 如何将十进制字符转换为 ASCII 字符

java - 错误 Hibernate 属性 "Lazy"

java - Maven 全新安装 : Failed to execute goal org. apache.maven.plugins :maven-resources-plugin:3. 2.0:resources