Java 7解决了迁移兼容性问题

Java 7解决了迁移兼容性问题,java,scala,java-8,scalding,unsupported-class-version,Java,Scala,Java 8,Scalding,Unsupported Class Version,将作业从java 7迁移到8后,即使编译成功,也会出现以下错误 编译时使用了相同版本的java,即java 8,运行时使用相同版本。因此,java的版本通常会有不匹配的情况,甚至scala的版本也是一样的 Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.JavaMain], main() threw exception, java.lang.NoSuchMethodError: scala.Predef$.Ar

将作业从java 7迁移到8后,即使编译成功,也会出现以下错误

编译时使用了相同版本的java,即java 8,运行时使用相同版本。因此,java的版本通常会有不匹配的情况,甚至scala的版本也是一样的

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.JavaMain], main() threw exception, java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
org.apache.oozie.action.hadoop.JavaMainException: java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
        at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:59)
        at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:51)
        at org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:35)
        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:498)
        at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:242)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
        at com.twitter.scalding.RichXHandler$.<init>(XHandler.scala:38)
        at com.twitter.scalding.RichXHandler$.<clinit>(XHandler.scala)
        at com.twitter.scalding.Tool$.main(Tool.scala:152)
        at com.twitter.scalding.Tool.main(Tool.scala)
        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:498)
        at org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:56)
失败的Oozie启动器,主类[org.apache.Oozie.action.hadoop.JavaMain],Main()引发异常,java.lang.NoSuchMethodError:scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
org.apache.oozie.action.hadoop.javamain异常:java.lang.NoSuchMethodError:scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
位于org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:59)
位于org.apache.oozie.action.hadoop.launchemain.run(launchemain.java:51)
位于org.apache.oozie.action.hadoop.JavaMain.main(JavaMain.java:35)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
在org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:242)上
位于org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
位于org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
位于org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
原因:java.lang.NoSuchMethodError:scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
在com.twitter.spothing.RichXHandler$(XHandler.scala:38)
在com.twitter.spothing.RichXHandler$(XHandler.scala)上
在com.twitter.spothing.Tool$.main上(Tool.scala:152)
在com.twitter.spothing.Tool.main(Tool.scala)上
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.oozie.action.hadoop.JavaMain.run(JavaMain.java:56)

看起来您升级了包含package
com.twitter.shoulding
的jar文件,但没有升级Scala运行时库以匹配。Scala运行时库与HDP 2.5.3相同