2015-07-22 76 views
5

我正在尝试将Java版本从1.7升级到1.8。 除了在Maven插件中将目标版本升级到1.8以外,未更改任何代码。Jackson Object Mapper从Java 7到Java 8的版本问题

Error: cannot access Versioned

来源:

private ObjectMapper mapper = new ObjectMapper(); 
return mapper.writeValueAsString(data); 

无法在互联网上找到任何地方的任何文件。我认为1.8应该完全向后兼容。

编辑: 甚至没有改变pom,如果我将我的本地maven设置为Java 8,它仍然是打破。因此,与Java编译8是有问题:(

[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.1.0:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.1.0:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.1.0:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.1.0:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.1.0:compile 
[INFO] | +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.11:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.11:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile 
[INFO] +- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile 
[INFO] | | +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.11:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0-rc2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.2.2:compile 
[INFO] +- com.fasterxml:jackson-xml-databind:jar:0.6.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile 
[INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile 
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile 

-X输出:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project my-module: Compilation failure 
[ERROR] /Users/xxxxxx/MyApp.java:[52,15] error: cannot access Versioned 
[ERROR] -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project myntra-orch-lms: Compilation failure 
/Users/xxxxxx/MyApp.java:[52,15] error: cannot access Versioned 

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure 
/Users/xxxxxx/MyApp.java:[52,15] error: cannot access Versioned 

    at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:656) 
    at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
    ... 20 more 
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 
+1

嗯,你不应该[开一个问题](https://github.com/FasterXML/jackson-databind/issues)而不是? – fge

+0

@fge,我不确定是杰克逊问题还是其他一些我不知道的真正问题。在我提出问题之前知道最好知道 – Reddy

+0

对我来说,它肯定听起来像一个bug。正如你所说,没有理由更新JDK会导致你的代码失败。但是,这是你的决定,当然;) – fge

回答

1

看起来你正在使用非常古老的杰克逊型号的混合我怀疑是用Java 8的顺序的Maven编译器插件使用的.jar文件可能会不同于Java 7,因此可能找不到Versioned接口。这可能是一个问题,因为在Java 8中,编译器要求在编译时Java接口存在于类路径中执行(JDK-8055048)。

Versioned接口是在1.6.0版本中引入的,而您的org.codehaus.jackson:jackson-core-asl版本是1.1.0。这可能是问题的根源。

低风险的修复可能是撞击org.codehaus.jackson:jackson-core-asl版本1.9.2中加入以下依赖于.pom文件所对应的其他库:

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.2</version> 
</dependency> 

作为一个长期的解决方案,我建议考虑在所有项目中将Jackson版本升级到最新版本2.X(打包在com.fastxml.jackson),并停止使用版本1.X(打包在org.codehaus.jackson)。

+0

Gavirolv,让我知道我该如何帮你解决这个问题。这是一个巨大的项目,-X打印大量的日志。你正在寻找什么具体的东西?虽然我不明白如何更改Java版本会导致此问题?它也发生在另一个项目中。同样的错误,我们正在使用'mapper.writeValueAsString(entry);' – Reddy

+0

@Reddy我已经更新了我的答案。让我们看看它是否有帮助。 –

相关问题