java.lang.NumberFormatException Not a version 9 异常处理


1. 异常说明

今天写了一段 Flink 窗口 function 的代码运行的时候抛出一个 NumberFormatException: Not a version: 9 的异常,异常信息如下:

Exception in thread "main" org.apache.flink.shaded.guava18.com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NumberFormatException: Not a version: 9
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache.get(LocalCache.java:3937)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4739)
    at org.apache.flink.api.scala.typeutils.TraversableSerializer$.compileCbf(TraversableSerializer.scala:184)
    at org.apache.flink.api.scala.typeutils.TraversableSerializer.compileCbf(TraversableSerializer.scala:51)
    at org.apache.flink.api.scala.typeutils.TraversableSerializer.<init>(TraversableSerializer.scala:41)
    at com.hnbian.flink.window.function.TestAggregateFunction$$anon$6$$anon$5.<init>(TestAggregateFunction.scala:30)
    at com.hnbian.flink.window.function.TestAggregateFunction$$anon$6.createSerializer(TestAggregateFunction.scala:30)
    at com.hnbian.flink.window.function.TestAggregateFunction$$anon$6.createSerializer(TestAggregateFunction.scala:30)
    at org.apache.flink.api.java.typeutils.PojoTypeInfo.createPojoSerializer(PojoTypeInfo.java:319)
    at org.apache.flink.api.java.typeutils.PojoTypeInfo.createSerializer(PojoTypeInfo.java:311)
    at org.apache.flink.streaming.api.datastream.WindowedStream.aggregate(WindowedStream.java:837)
    at org.apache.flink.streaming.api.datastream.WindowedStream.aggregate(WindowedStream.java:730)
    at org.apache.flink.streaming.api.scala.WindowedStream.aggregate(WindowedStream.scala:280)
    at com.hnbian.flink.window.function.TestAggregateFunction$.delayedEndpoint$com$hnbian$flink$window$function$TestAggregateFunction$1(TestAggregateFunction.scala:30)
    at com.hnbian.flink.window.function.TestAggregateFunction$delayedInit$body.apply(TestAggregateFunction.scala:17)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
    at scala.App$class.main(App.scala:76)
    at com.hnbian.flink.window.function.TestAggregateFunction$.main(TestAggregateFunction.scala:17)
    at com.hnbian.flink.window.function.TestAggregateFunction.main(TestAggregateFunction.scala)
Caused by: java.lang.NumberFormatException: Not a version: 9
    at scala.util.PropertiesTrait$class.parts$1(Properties.scala:184)
    at scala.util.PropertiesTrait$class.isJavaAtLeast(Properties.scala:187)
    at scala.util.Properties$.isJavaAtLeast(Properties.scala:17)
    at scala.tools.util.PathResolverBase$Calculated$.javaBootClasspath(PathResolver.scala:276)
    at scala.tools.util.PathResolverBase$Calculated$.basis(PathResolver.scala:283)
    at scala.tools.util.PathResolverBase$Calculated$.containers$lzycompute(PathResolver.scala:293)
    at scala.tools.util.PathResolverBase$Calculated$.containers(PathResolver.scala:293)
    at scala.tools.util.PathResolverBase.containers(PathResolver.scala:309)
    at scala.tools.util.PathResolver.computeResult(PathResolver.scala:341)
    at scala.tools.util.PathResolver.computeResult(PathResolver.scala:332)
    at scala.tools.util.PathResolverBase.result(PathResolver.scala:314)
    at scala.tools.nsc.backend.JavaPlatform$class.classPath(JavaPlatform.scala:28)
    at scala.tools.nsc.Global$GlobalPlatform.classPath(Global.scala:115)
    at scala.tools.nsc.Global.scala$tools$nsc$Global$$recursiveClassPath(Global.scala:131)
    at scala.tools.nsc.Global.classPath(Global.scala:128)
    at scala.tools.nsc.backend.jvm.BTypesFromSymbols.<init>(BTypesFromSymbols.scala:39)
    at scala.tools.nsc.backend.jvm.BCodeIdiomatic.<init>(BCodeIdiomatic.scala:24)
    at scala.tools.nsc.backend.jvm.BCodeHelpers.<init>(BCodeHelpers.scala:23)
    at scala.tools.nsc.backend.jvm.BCodeSkelBuilder.<init>(BCodeSkelBuilder.scala:25)
    at scala.tools.nsc.backend.jvm.BCodeBodyBuilder.<init>(BCodeBodyBuilder.scala:25)
    at scala.tools.nsc.backend.jvm.BCodeSyncAndTry.<init>(BCodeSyncAndTry.scala:21)
    at scala.tools.nsc.backend.jvm.GenBCode.<init>(GenBCode.scala:47)
    at scala.tools.nsc.Global$genBCode$.<init>(Global.scala:675)
    at scala.tools.nsc.Global.genBCode$lzycompute(Global.scala:671)
    at scala.tools.nsc.Global.genBCode(Global.scala:671)
    at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.serialVUID(GenASM.scala:1240)
    at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1329)
    at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.emitFor$1(GenASM.scala:198)
    at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:204)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1528)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1513)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.wrapInPackageAndCompile(ToolBoxFactory.scala:197)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.compile(ToolBoxFactory.scala:252)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$$anonfun$compile$2.apply(ToolBoxFactory.scala:429)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$$anonfun$compile$2.apply(ToolBoxFactory.scala:422)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$withCompilerApi$.liftedTree2$1(ToolBoxFactory.scala:355)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$withCompilerApi$.apply(ToolBoxFactory.scala:355)
    at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl.compile(ToolBoxFactory.scala:422)
    at org.apache.flink.api.scala.typeutils.TraversableSerializer$LazyRuntimeCompiler.compileCbfInternal(TraversableSerializer.scala:230)
    at org.apache.flink.api.scala.typeutils.TraversableSerializer$LazyRuntimeCompiler.call(TraversableSerializer.scala:220)
    at org.apache.flink.api.scala.typeutils.TraversableSerializer$LazyRuntimeCompiler.call(TraversableSerializer.scala:216)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4742)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
    at org.apache.flink.shaded.guava18.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
    ... 24 more

2. 异常原因

版本冲突导致 flink 在寻找 guava 版本的时候 shaded 错误导致此异常。

编译器引用的scala-sdk版本是2.11.8

 但是maven引入的scala相关包2.11.12

3. 解决办法

可以在maven中将引入的 Scala 版本改为 2.11.8。

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.11.8</version>
</dependency>
<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-compiler</artifactId>
    <version>2.11.8</version>
</dependency>

4.参考文档

https://blog.csdn.net/qq_36932624/article/details/107230200


文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
 上一篇
Flink系列 11. 介绍Flink中 ProcessFunction 的使用 Flink系列 11. 介绍Flink中 ProcessFunction 的使用
1. ProcessFunction 介绍1.1 介绍Flink一般的转换算子是无法访问事件的时间戳信息和WaterMark信息的。例如 MapFunction 这样的 map 转换算子就无法访问时间戳或者当前事件的事件时间。而这在某些应用
2020-08-25
下一篇 
Flink系列 10. 介绍 Flink window function 的使用 Flink系列 10. 介绍 Flink window function 的使用
1. 窗口函数(window function)介绍定义完窗口分配器(WindowAssigner)之后,我们就需要指定要在每个窗口上执行的计算。这是Window Fucntion的职责,一旦系统确定窗口已准备好进行处理,就可以处理每个窗口
2020-08-05
  目录