Como faço para obter a versão Scala de dentro do próprio Scala?

91

Não se trata de opções do compilador de linha de comando. Como obtenho programaticamente a versão Scala dentro do código?

Como alternativa, onde o plugin Eclipse Scala v2 armazena o caminho scalac?

mlvljr
fonte
1
O Scala IDE for Eclipse não armazena um caminho para scalac; ele chama as classes do compilador diretamente de dentro com o Eclipse JVM.
Jean-Philippe Pellet
2
@ Jean-Philippe Pellet Graças, btw, eu descobri que scala.sys.propsas referências que parece ser bibliotecas Scala sob algo como sun.boot.class.path -> F:\eclipse\configuration\org.eclipse.osgi\bundles\316\1\.cp\lib\scala-library.jar;(com jar's library.proertiescontendo version.number=2.9.0.final). Mas já que scala.sys.propsestá lá, já 2.9.0que é apenas uma dica em si :)
mlvljr
Droga, alguém, por favor, faça disso um wiki! :)
mlvljr
..heck, isso vai ter 100 votos positivos este ano, provavelmente, vamos continuar pressionando, pessoal (quem saberia que Scala é tão complicado que mesmo coisas tão simples podem confundi-los).
mlvljr

Respostas:

123

Isso funcionará sem acesso a 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
Paul Butcher
fonte
3
Tive que adicionar scala porque as bibliotecas do Spark foram carregadas primeiro. Entãoscala.util.Properties.versionString
Francisco López-Sancho
47

Existem três maneiras de obter a versão 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
Naga Vijayapuram
fonte
2
O primeiro é o mais legal de todos nesta página, aparentemente :)
mlvljr
1
Para sua informação, util.Properties.versionNumberStringexiste apenas a partir do scala 2.10.x. Para scala abaixo de 2.10.x, você pode usar util.Properties.releaseVersion.getOrElse("unknown version")para obter a string do número da versão.
Jordom
15

Você pode obter a versão Scala assim:

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

Não sei os detalhes do plugin, no entanto.

HairyFotr
fonte
Eu acho que você pode usar em scala.tools.nsc.Properties.versionStringqualquer lugar.
HairyFotr
No import scala.tools.nsc.Properties;meu diz "ferramentas de objetos não são membros do pacote ***.
Scala
7
scala.tools...está disponível apenas se scala-compiler.jarestiver no caminho de classe.
michael.kebe
9

Também podemos obter a versão Scala instalada

  1. Abra o prompt de comando
  2. tipo Scala
  3. Você obterá a seguinte saída:

Bem-vindo ao Scala versão 2.10.3 (Java HotSpot (TM) 64-Bit Server VM, Java 1.8.0_6 0). Digite expressões para que sejam avaliados. Digite: ajuda para mais informações.

Chinya
fonte