Como usar o Scala no Intellij Idea (ou: por que é tão difícil conseguir um IDE funcional para Scala)?
-
28-09-2019 - |
Pergunta
Recentemente, desisti de tentar usar o Scala no Eclipse (coisas básicas como a conclusão não funciona). Então agora estou tentando Intellij. Não estou indo muito longe.
Consegui editar programas (no destaque e conclusão da sintaxe ... sim!). Mas sou incapaz de executar nem o mais simples "Hello World". Este foi o erro original:
Scala signature Predef has wrong version Expected 5.0 found: 4.1 in .... scala-library.jar
Mas isso foi ontem com a idéia 9.0.1. Veja abaixo...
ATUALIZAR
Hoje, desinstalei o Intellij 9.0.1 e instalei 9.0.2 Disponibilidade antecipada, com a versão estável 4/14 do plug-in do Scala.
Então eu configurei um projeto do zero através dos Wizards:
- Novo projeto do zero
- JDK é 1.6.u20
- Aceite o padrão (projeto) em vez de global / módulo
- Aceite o download do scala 2.8.0beta1 na pasta lib do projeto
Criou uma nova classe:
object hello { def main(args: Array[String]) { println("hello: " + args); } }
Para meus esforços, agora tenho um erro novinho em folha :)
Aqui está:
Scalac internal error: class java.lang.ClassNotFoundException [java.net.URLClassLoader$1.run(URLClassLoader.java:202), java.security.AccessController.doPrivileged(Native Method), java.net.URLClassLoader.findClass(URLClassLoader.java : 190), java.lang.classLoader.loadclass (classloadler.java:307), Sun.misc.launcher $ appClassLoadeler.loadclass (lançador.java:301), java.lang.classloader.loadclass (classloader.java:248) , java.lang.class.formoname0 (método nativo), java.lang.class.formoname (classe.java:169), org.jetbrains.plugins.scala.compiler.rt.scalacrunner.main (scalacrunner.java:72)
Atualização final
Eu desinstalei 9.0.2 EA e reinstalei 9.0.1, mas desta vez foi com a versão 2.7.3 do Scala em vez do padrão 2.7.6, porque 2.7.3 é o mostrado nas fotos no site Intellij ( Eu acho que as telas provam que eles realmente testaram esta versão!). Agora tudo funciona !!!
Solução
Encontrei o mesmo erro do Scalac ao tentar executar um projeto Scala no Intellij Idea 9.0.2 e consegui encontrar uma solução por acaso :). Estas são as etapas que tomei na criação do projeto e executando -o.
Eu criei um projeto Scala no Intellij Idea 9.0.2 Final (foi lançado hoje). Instalei o plug-in Scala, reiniciei o IDE e criei um novo projeto Scala (com o nome "testscala") com o Scala-2.8.0.beta1 como biblioteca de projetos. Depois que o projeto é criado e as bibliotecas de Scala baixadas, criei um arquivo test.scala com o seguinte conteúdo:
object Test {
def main(args:Array[String]){
println("hello")
}
}
Depois disso, criei uma configuração de lançamento ("Editar configurações"), escolhendo o modelo "Aplicativo". Defino como teste de classe principal e escolhi o nome do projeto ("testscala") no caixa "Uso ClassPath e JDK do módulo". Quando executo a configuração, recebo o mesmo erro que você relatou ("Erro interno do Scalac: classe java.lang.classnotfoundException").
Agora vem a parte esquisita :). Eu clico com o botão direito do mouse no projeto, escolha "Configurações do módulo", dê uma olhada em todas as configurações, mas Eu não mudo nada . Clique em "Aplicar" e "OK", tente executar a configuração novamente e funciona :) .
Eu uso Intellij IDEA 9.0.2 O lançamento final (Build 95-66); Ubuntu 9.10 e JDK 1.6.0_18. Eu também tenho que mencionar que tive um JDK configurado no Intellij, caso contrário, há uma etapa extra para configurá -lo.
ATUALIZAR:
Ao verificar a configuração do módulo, é preciso clicar no Módulo-> scala e Facets-> scala (expanda-o e clique em scala (nome do projeto)) . Ambas as configurações são sobre o local do Scala Compiler e Scala Library. Eu acho que esses valores não estão definidos corretamente quando o projeto é criado, mas é salvo quando o usuário os tocar e salvar as configurações.
Outras dicas
Para responder à sua pergunta, é difícil obter um IDE em funcionamento para Scala por dois motivos: (a) Scala está apenas começando a alcançar um amplo público e (b) devido a (a), não há caso de negócios para passar o tempo em um scala ide.
Além disso, se você tem idade suficiente para liderar sua mente e jovem o suficiente para se lembrar, saberia que, nos primeiros cinco ou mais anos de Java, ficamos presos a ferramentas bem Código quando você disse isso - nenhum erro destacando, sem inteligência automática e a palavra refatoração nem existia. Se você deseja pioneiro, precisa estar preparado para cortar um pouco da estrada, ou pelo menos Bush-Bash.
Sei que não vai te ajudar, mas usei com sucesso a ideia para Scala no Linux, Mac e Windows. Normalmente, tenho o Scala SDK instalado em algum lugar localmente e a idéia de apontar, em vez de usar a opção 'Download'.
Atualmente, estou usando principalmente um Versão EAP da ideia 9 no Mac OS X com Scala 2.8.0.beta1-rc5 e está funcionando bem (exceto que o FSC não parece funcionar com fontes mistas).
Você poderia tentar sua sorte no Fórum de discussão sobre plug -in de ideia scala, embora eu não tenha tido muitas respostas às minhas próprias postagens lá.
Instalar o plug-in é pré-requisito.
A próxima coisa que você deve fazer é definir uma biblioteca (global ou específica do projeto; eu uso global) que segura a biblioteca Scala e Arquivos JAR do compilador (no mínimo, isso é scala-compiler.jar
e scala-library.jar
). Adicionar frascos de origem e um frasco de documentação ou URLs também é uma boa ideia. Em seguida, faça desta biblioteca uma dependência de quaisquer módulos em seu projeto que incluam código Scala.
Por fim, encontre as facetas Scala nesses módulos e descrete as duas caixas de seleção lá.
Acabei de fazer uma nova instalação e tive exatamente esse mesmo problema. Aconteceu que, porque eu havia criado o arquivo no pacote root, a Idea havia adicionado uma instrução de pacote na parte superior com nomear um pacote. Presumo que isso tenha sido compilado como "objeto de pacote principal" - sintaxe válida em 2.8? De qualquer forma, eu apaguei a linha que dizia o pacote e tudo funcionou bem.
Eu tive o mesmo problema ontem enquanto tentava configurá -lo. A solução é bem simples, basta definir o Scala em algum lugar nas configurações do projeto.
Você está misturando código compilado com duas versões diferentes de Scala.
Eu uso o NetBeans para escrever programas Scala. Até agora, funciona muito bem com meus códigos. Você pode experimentar o plugin aqui: http://wiki.netbeans.org/scala68v1.
Eu estava recebendo esse erro e também tive que clicar com o botão direito do mouse no projeto e "abrir as configurações do módulo". No entanto, foi mais do que apenas acertar a aplicação. Eu tive que garantir que minha raiz de conteúdo estivesse correta para cada projeto. Por alguma razão, houve algumas pastas de origem e teste incorretas.
Meu projeto usa o Maven como a principal ferramenta de construção e a importação do projeto para o Intellij é provavelmente o que criou essas configurações incorretas.
Eu tive um problema semelhante, seguindo isto As instruções da postagem do blog resolveram o problema para mim