2015-07-22 73 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我已經更新了我的答案。讓我們看看它是否有幫助。 –

相關問題