Skip to content

Error on sun.* APIs when -release Java version is lower than the execution Java version #12866

Closed as not planned
@LuciferYang

Description

@LuciferYang

Reproduction steps

Scala version: 2.13.11, 2.13.12
Java version: 17.0.8, 21-ea

package personal.code

import sun.util.calendar.ZoneInfo

import java.util.{Date, TimeZone}

object DateTimeUtils {

  def rebaseGregorianToJulianDays(days: Int): Int = 100

  def toJavaDate(days: Int): Date = {
    val rebasedDays = rebaseGregorianToJulianDays(days)
    val localMillis = Math.multiplyExact(rebasedDays, 86400000)
    val timeZoneOffset = TimeZone.getDefault match {
      case zoneInfo: ZoneInfo => zoneInfo.getOffsetsByWall(localMillis, null)
      case timeZone: TimeZone => timeZone.getOffset(localMillis - timeZone.getRawOffset)
    }
    new Date(localMillis - timeZoneOffset)
  }
}

Problem

Run command with Java 17 & 21-ea

scalac personal/code/DateTimeUtils.scala -release 11 

or run command with Java 21-ea

scalac personal/code/DateTimeUtils.scala -release 17 

There are compilation errors:

personal/code/DateTimeUtils.scala:3: error: object util is not a member of package sun
import sun.util.calendar.ZoneInfo
           ^
personal/code/DateTimeUtils.scala:15: error: not found: type ZoneInfo
      case zoneInfo: ZoneInfo => zoneInfo.getOffsetsByWall(localMillis, null)
                     ^
personal/code/DateTimeUtils.scala:15: error: value getOffsetsByWall is not a member of java.util.TimeZone
      case zoneInfo: ZoneInfo => zoneInfo.getOffsetsByWall(localMillis, null)
                                          ^
3 errors

But if the command is changed to

scalac personal/code/DateTimeUtils.scala -target:11

or

scalac personal/code/DateTimeUtils.scala -release 17 // with Java 17
scalac personal/code/DateTimeUtils.scala -release 21 // with Java 21

the compilation will be successful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions