Scala从Java8升级到Java11踩过的坑

首先要考虑到JDK11和scala的兼容性,根据实际情况选择需要的scala版本

在这里插入图片描述
JDK&Scala Compatibility

问题 01

Detect muti scala-library version

原因

同一个依赖有多个版本,maven不知道选择哪个

解决方案

  1. 同一依赖maven会根据路径最短原则选择依赖,依赖路径相同会根据声明优先选择
    可以根据这个特性,使想要用的版本被选择
  2. Dependency_Management是一个更好的选择,如果在dependency_Management中指定只能用某个版本,maven只会选择这个版本
    DependencyManagement官方介绍
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala-library.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

问题02

error: object parsing is not a member of package util

原因

因为 scala-parser-combinators 依赖在2.11中被移除了,必须自己添加

解决方案

<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-parser-combinators_2.13</artifactId>
<version>1.1.2</version>
</dependency>

问题03

[ERROR] (class java.lang.RuntimeException/error reading Scala signature of JSON.class: Scala signature JSON has wrong version

原因

因为 scala-parser-combinators 的版本太高了

解决方案

<dependency>
<groupId>org.scala-lang.modules</groupId>
<artifactId>scala-parser-combinators_2.12</artifactId>
<version>1.1.0</version>
</dependency>

问题04

FATAL ERROR in native method: processing of -javaagent failed
Exception in thread “main” java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
at java.base/java.lang.Class.getField(Class.java:2000)

原因

因为jacoco-maven-plugin插件只支持到JAVA9

解决方案

<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</version>
</plugin>

问题05

Exception in thread “ScalaTest-main” java.lang.NoClassDefFoundError: org/scalacheck/Test T e s t C a l l b a c k a t o r g .

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值