Как мне получить версию Scala из самого Scala?

91

Речь идет не о параметрах компилятора командной строки. Как программно получить версию Scala внутри кода?

В качестве альтернативы, где плагин Eclipse Scala v2 хранит путь к нему scalac?

mlvljr
источник
1
Scala IDE для Eclipse не сохраняет путь к scalac; он вызывает классы компилятора непосредственно изнутри с помощью Eclipse JVM.
Жан-Филипп Пелле
2
@ Jean-Philippe Pellet Спасибо, кстати, я обнаружил, что scala.sys.propsссылки на то, что кажется библиотеками scala, находятся под чем-то вроде sun.boot.class.path -> F:\eclipse\configuration\org.eclipse.osgi\bundles\316\1\.cp\lib\scala-library.jar;(with jar's library.proertiescontains version.number=2.9.0.final). Но так scala.sys.propsкак там есть, потому 2.9.0что это лишь намек :)
mlvljr
Блин, кто-нибудь, пожалуйста, сделайте это вики! :)
mlvljr
..проверьте, в этом году он получит 100 голосов за, наверное, давайте продолжим настаивать, ребята (кто бы знал, что Scala настолько запутана, что даже такие простые вещи могут вас озадачить).
mlvljr

Ответы:

123

Это будет работать без доступа к scala-compiler.jar:

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26).
Type in expressions to have them evaluated.
Type :help for more information.

scala> util.Properties.versionString
res0: java.lang.String = version 2.9.1.final
Пол Батчер
источник
3
Мне пришлось добавить scala, так как в первую очередь загружались искровые библиотеки. Итакscala.util.Properties.versionString
Франсиско Лопес-Санчо
48

Есть три способа получить версию Scala:

scala> util.Properties.versionNumberString
res103: String = 2.11.4

scala> util.Properties.versionString
res104: String = version 2.11.4

scala> util.Properties.versionMsg
res105: String = Scala library version 2.11.4 -- Copyright 2002-2013, LAMP/EPFL
Нага Виджаяпурам
источник
2
Первый, похоже,
самый
1
FYI util.Properties.versionNumberStringсуществует только с scala 2.10.x. Для scala ниже 2.10.x вы можете использовать util.Properties.releaseVersion.getOrElse("unknown version")строку с номером версии.
jordom
15

Вы можете получить версию Scala так:

scala> scala.tools.nsc.Properties.versionString
res7: java.lang.String = version 2.9.0.final

Однако я не знаю специфики плагина.

Волосатый
источник
Я думаю, вы можете использовать его scala.tools.nsc.Properties.versionStringгде угодно.
HairyFotr
На import scala.tools.nsc.Properties;моем говорит "объектные инструменты не являются членом пакета ***. Scala" :(
mlvljr
7
scala.tools...доступен только в том случае, если scala-compiler.jarнаходится в пути к классам.
michael.kebe
9

Мы также можем получить установленную версию Scala

  1. Открыть командную строку
  2. введите Scala
  3. Вы получите следующий результат:

Добро пожаловать в Scala версии 2.10.3 (64-разрядная серверная виртуальная машина Java HotSpot (TM), Java 1.8.0_6 0). Введите выражения, чтобы они оценивались. Введите: help для получения дополнительной информации.

Чинья
источник