2015-07-22 16 views
5

Sto tentando di aggiornare la versione Java da 1.7 a 1.8. Non ha modificato alcun codice oltre all'aggiornamento della versione di destinazione a 1.8 nel plugin Maven.Jackson Object Mapper Versione con versione da Java 7 a Java 8

Error: cannot access Versioned.

Fonte:

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

Impossibile trovare alcuna documentazione in qualsiasi parte del Internet. Ho pensato che 1.8 dovrebbe essere completamente compatibile con le versioni precedenti.

Edit: senza nemmeno cambiare pom, se ho impostato la mia Maven locale per Java 8, è ancora rottura. Così la compilazione con Java 8 sta avendo problema :(

[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 uscita:.

[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

Hmm, non dovresti [aprire un problema] (https://github.com/FasterXML/jackson-databind/issues)? – fge

+0

@ fge, non sono sicuro che si tratti di un problema di Jackson o di qualche altro problema originale di cui non sono a conoscenza. È meglio sapere prima di sollevare il problema – Reddy

+0

Beh, a me sembra proprio un bug. Come dici tu, non c'è alcun motivo per cui l'aggiornamento del JDK provochi il fallimento del tuo codice. Ma questa è la tua decisione, ovviamente;) – fge

risposta

1

Sembra che si sta utilizzando un mix di versioni molto vecchie Jackson Ho il sospetto che in Java 8 dell'ordine dei file .jar usati dal plugin del compilatore Maven possono essere diversi da Java 7, quindi l'interfaccia Versioned potrebbe non essere trovata. Può essere un problema poiché in Java 8 il compilatore java richiede che l'interfaccia sia presente nel classpath durante la compilazione l'implementazione (JDK-8055048).

L'interfaccia Versioned è stata introdotta in 1.6.0 mentre si dispone della versione 1.1.0 di org.codehaus.jackson:jackson-core-asl. Questa è probabilmente la causa principale del problema.

Una correzione a basso rischio potrebbe essere quello di urtare la versione 1.9.2 org.codehaus.jackson:jackson-core-asl a corrispondere le altre librerie aggiungendo la seguente dipendenze nel file .pom:

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

Come una soluzione a lungo termine suggerisco di considera l'eventualità di saltare la versione di Jackson all'ultima 2.X (inclusa in com.fastxml.jackson) in tutti i tuoi progetti e smettere di usare la versione 1.X (inclusa in org.codehaus.jackson).

+0

Gavirolv, fammi sapere come posso aiutarti a risolvere questo problema.È un po 'un grande progetto e -X stampa molto log. Qualcosa di specifico che stai cercando? Anche se non ho capito come cambiare la versione di Java può causare questo problema? Sta accadendo anche in "un altro progetto". Stesso errore in cui stiamo usando 'mapper.writeValueAsString (voce);' – Reddy

+0

@Reddy Ho aggiornato la mia risposta. Vediamo se aiuta. –