O editor não contém um tipo principal

92

Acabei de ler o código de amostra do Scala no site do Scala, mas encontrei um erro irritante ao tentar executá-lo.

Aqui está o código: http://www.scala-lang.org/node/45 . Ao executá-lo no Eclipse, recebi esta mensagem 'Editor não contém um tipo principal' que o impede de ser executado.

Preciso fazer alguma coisa ... ou seja, dividir esse arquivo em vários arquivos ou o quê?

Helen Neely
fonte

Respostas:

37

Tenho muito esse problema com Eclipse e Scala. Isso ajuda se você limpar seu espaço de trabalho e reconstruir seu projeto.

Às vezes, o Eclipse não reconhece corretamente quais arquivos ele deve recompilar :(

Edit: O código funciona bem no Eclipse

nuriaion
fonte
4
Fez a mesma experiência. Além disso, fechar e abrir o projeto parecia ser necessário para mim às vezes.
Fabian Steeg
Obrigado @nuriaion e @Fabian, sim, reabrir o projeto fez com que funcionasse. Obrigado novamente por suas dicas.
Helen Neely
3
@Helen Em Eclipse => Project => Clean você pode limpar os projetos, a reconstrução será executada automaticamente ... Então você não precisa fechar e reabrir o projeto.
nuriaion
abrir e fechar o projeto scala me deu: Ocorreram erros durante a compilação. Erro ao instanciar o construtor 'ch.epfl.lamp.sdt.core.scalabuilder'. O plug-in "ch.epfl.lamp.sdt.core" não conseguiu instanciar a classe "scala.tools.eclipse.Builder". Não foi possível inicializar a classe scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder O plug-in "ch.epfl.lamp.sdt.core" não conseguiu instanciar a classe "scala.tools.eclipse.Builder". Não foi possível inicializar a classe scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman Sangat
87

No Eclipse, certifique-se de adicionar sua pasta de origem nas propriedades do projeto -> caminho de construção java -> origem. Caso contrário, a função main () pode não ser incluída em seu projeto.

milkplus
fonte
Observe que isso também pode ser feito arrastando e soltando os arquivos em "src" na visualização do explorador de pastas.
Max von Hippel
Isso resolveu meu problema, mas depois de fechar e abrir o projeto.
Disse
26

Você deve certificar-se de que seus arquivos .java estão na pasta .src no eclipse. Eu tive exatamente o mesmo problema até que eu descobri.

ultra99
fonte
26

Uma maneira mais simples é fechar o projeto e reabri-lo.

estático
fonte
21

Apenas certifique-se de que a pasta em que você trabalha foi adicionada ao caminho de construção:

right-clicksua pasta -> build Path->Use as source Folder

e agora deve encontrar mainnele.

kholofelo Maloma
fonte
6

Eu tive o mesmo problema. Eu tentei todo tipo de coisa. E eu vim saber que

  1. Meus arquivos .java não estavam vinculados e
  2. eles não foram colocados na pasta 'src'.

Coisas que eu fiz:

Propriedades do projeto >> Caminho de construção Java >> Fonte

  • Excluiu a pasta 'src' original que estava vazia usando a opção 'Remover'
  • Adicionada a fonte que continha meus arquivos .java de origem usando a opção 'Adicionar pasta'

Isso resolveu o erro.

Anand Dhole
fonte
5

Você pode tentar executar a função principal na barra lateral de contorno do eclipse.

solução

Fei
fonte
Quando eu fizer isso, eu tenho uma mensagem de erro: <project root> [in Tut_RMI] does not exit. (O nome do projeto é Tut_RMI) Este nome de projeto é inválido?
Casper
5
***

Basta fechar e reabrir

*** seu projeto em eclipse. Às vezes, há problemas de ligação. Isso resolveu meu problema

Mohit Singh
fonte
3

Uma solução rápida:

Primeiro, exclua o pacote: clique com o botão direito no pacote de origem >> Caminho de construção >> Excluir

Em seguida, inclua-o de volta: Clique com o botão direito no pacote de origem >> Caminho de construção >> Incluir

rwc
fonte
3

O que você deve fazer é criar um projeto Java, mas certifique-se de colocar este arquivo no arquivo de pacote desse projeto, caso contrário, você encontrará o mesmo erro.

insira a descrição da imagem aqui

AbsintheSyringe
fonte
2

Esse código é válido. Você já tentou compilá-lo manualmente usando o scalac? Além disso, você chamou seu arquivo de "livro de endereços", todo em letras minúsculas, como o nome do objeto?

Além disso, descobri que o Eclipse, por algum motivo, definiu a classe principal como ".addressbook" em vez de "addressbook".

Daniel C. Sobral
fonte
Obrigado Daniel, sim, o arquivo se chama 'livro de endereços' em letras minúsculas. Tentarei reabrir o projeto para ver se isso ajuda.
Helen Neely
2

você deve criar seu arquivo por

selecionando no lado direito você encontrará o nome do seu arquivo,

embaixo dela, você encontrará a pasta src, clique com o botão direito e selecione -> opção de classe

seu seu arquivo deve ser criado

vijaya
fonte
2

Certifique-se de que seu arquivo .java esteja presente no pacote str ou em algum outro pacote. Se o arquivo java com a função principal estiver fora de todos os pacotes, esse erro será gerado.

Sahil Pruthi
fonte
2

Se tiver enfrentado um problema semelhante, resolva isso clicando com o botão direito do mouse no método principal na visualização do esboço e execute como um aplicativo Java.

Naresh
fonte
1

Eu também tive esse problema. A solução é garantir que o eclipse tenha criado o projeto como um projeto Java. Basta criar um novo projeto Java e copiar sua classe para a pasta src (e importar as dependências eventuais). Isto deve resolver o problema.

KullDox
fonte
Obrigado KullDox, por seu comentário. Há muito que resolvi o problema, mas espero que outra pessoa considere as soluções aqui úteis.
Helen Neely,
1

A resposta correta é: a biblioteca Scala precisa antes da biblioteca JRE no buildpath.

Vá para Java Buildpath> Order and Export e mova a biblioteca Scala para o topo

MGM
fonte
1

Tive esse problema com um projeto Java que importei do sistema de arquivos (no Eclipse Helios). Aqui está uma dica: o código src não parece ter sido compilado, pois nenhum diretório "bin" apareceu.

Tive que criar um projeto Java do zero (usando o assistente) e, em seguida, comparar os .projectarquivos dos projetos que não estavam funcionando e os que estavam funcionando.

O projeto que fornece "Editor não contém um tipo principal" tinha isso como "buildSpec" no arquivo .project:

<buildSpec>
</buildSpec>

Mas o projeto de trabalho tinha isso como "buildSpec":

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Copiei isso e o projeto importado funcionou.

Eu sei que minha resposta é para Java, mas o mesmo pode ser o problema para seu projeto Scala.

user2704136
fonte
1

Pode ser que o arquivo que você criou esteja fora da pasta src (origem). Tentar chamar o objeto de classe (do arquivo localizado na pasta src) do arquivo .java fora da pasta de origem resulta no mesmo erro. Copie o arquivo .java para a pasta de origem e crie-o. O erro desaparecerá.

Vamsi Tallapudi
fonte
1

Eu tive o mesmo problema. Tive a classe principal fora do pacote src, em outra pasta. Eu mudei para uma pasta correta e resolvi

Jacruz
fonte
1

execute "eclipse -clean -refresh" na linha de comando. Isso corrigiu o problema para mim quando todas as outras soluções falharam.

MikeG
fonte
1

Este pode ser o problema com o caminho Java Build. Experimente os passos abaixo:

  1. Vá para propriedades do projeto
  2. Vá para caminho de construção java
  3. Vá para a guia Código-fonte e adicione a pasta src do projeto

Isto deve resolver o problema.

AalekhG
fonte
1

Se for um projeto maven, verifique se o arquivo java foi criado em src / main / java

Se você não estiver conseguindo, altere o caminho JRE e crie os arquivos java na estrutura de pastas acima

ssomu
fonte
0

Para mim, no Eclipse 3.6, esse problema ocorre quando meu método principal não é público. Eu causei o problema por ter um método principal como este:

static void main(String[] args) 

O dubugger não conseguiu detectar isso sozinho. Estou muito surpreso que Eclipse tenha esquecido isso.

Djangofan
fonte
0

No pior caso - crie o projeto mais uma vez com todas as importações desde o início. No meu caso, nenhuma das outras opções funcionou. Este tipo de erro sugere que há um erro nas configurações do projeto. Uma vez consegui resolvê-lo, mas assim que novos desenvolvimentos foram feitos, o erro voltou. Recriar tudo desde o início me ajudou a entender e otimizar alguns links, e agora estou confiante de que funciona corretamente.

Sergiu
fonte
0

Siga as etapas abaixo:

  1. Faça backup de todos os seus arquivos .java para algum outro local
  2. deletar todo o projeto java
  3. Crie um novo projeto java clicando com o botão direito na raiz e clique em novo
  4. restaure todos os arquivos para o novo local !!
Mani Kandan
fonte
0

Arquivo >> Importar >> Projetos existentes para a área de trabalho >> Selecione Arquivo Arquivado >> Navegue e localize o arquivo >> Concluir. Se ele já foi importado de alguma outra forma, exclua-o e tente dessa forma. Eu estava tendo o mesmo problema até tentar fazer isso.

Mike
fonte
0

Mais uma coisa a verificar: certifique-se de que seu arquivo de origem contém a declaração de pacote correta correspondente ao subdiretório em que está. O erro mencionado pelo OP pode ser visto ao tentar executar um "tipo principal" declarado em um arquivo em um subdiretório, mas faltando a instrução do pacote.

Daniel Ashton
fonte
0

Também tive este problema depois de alterar a pasta de origem. A solução que funcionou é apenas editar o arquivo e salvá-lo.

Hunsu
fonte
0

Experimente 'Atualizar projeto'. Depois de fazer isso, a opção Executar como aplicativo Java apareceu.

George Santhosh
fonte
0

No meu caso particular 'Hello World', a causa desse problema era o fato de que meu main()método estava dentro do Scala class.

Coloquei o main()método no Scala objecte o erro desapareceu.

Isso ocorre porque Scala objectem termos de Java é a entidade com apenas membros e métodos estáticos dentro.

É por isso que Java public static void main()em Scala deve ser colocado em object.

(Scala classnão pode conter estática dentro)

Vlad.Bachurin
fonte