O pacote declarado não corresponde ao pacote esperado “”

89

Estou usando o Eclipse e não uso Java há algum tempo. No entanto, posso compilar meu código na linha de comando perfeitamente e gerar os .classarquivos necessários . No Eclipse, ele reclama disso The declared package "Devices" does not match the expected package "". O que isso significa e como posso corrigir isso?

Código de amostra:

package Devices;

public final class DevFrequency 
{
    public short messageID;
    public double frequency;
    public short converterID;
    public DevFrequency() 
    {
    }
    public DevFrequency(short _messageID,double _frequency,short _converterID)
    {
        messageID = _messageID;
        frequency = _frequency;
        converterID = _converterID;
    }
}

O nome do meu projeto é DeviceDDS.

Marcel Korpel
fonte
2
Esta classe está no /src/Convertersdiretório?
Jeremy
6
Se você vai mudar sua pergunta retrospectivamente (o que parece sem sentido, para ser honesto), você precisa ser consistente sobre isso - você não editou o primeiro parágrafo da pergunta. Você também fez todos os comentários parecerem estranhos. Por que mudar tudo, quase um ano e meio depois?
Jon Skeet

Respostas:

51

O Eclipse espera que o pacote declarado corresponda à hierarquia de diretório - portanto, ele espera que seu arquivo Java esteja em um diretório chamado "Dispositivos" em sua raiz de origem. No momento, parece que o arquivo está diretamente na raiz do código-fonte. Portanto, crie o diretório apropriado e mova o arquivo para lá.

Observe que, convencionalmente, os pacotes estão em letras minúsculas e incluem o nome da sua organização na ordem inversa do DNS, por exemplo

com.foo.devices;
Jon Skeet
fonte
3
@Sakti: Pelo que eu sei, você não pode, e eu recomendo fortemente que você não faça isso, mesmo se puder. Todos os desenvolvedores Java experientes esperam que você siga as convenções normais.
Jon Skeet
85

Tente fechar e reabrir o arquivo.

É possível obter este erro no eclipse quando não há absolutamente nada de errado com o local do arquivo ou declaração do pacote. Experimente isso antes de gastar muito tempo tentando essas outras soluções. Às vezes, o eclipse fica confuso. Funcionou para mim em várias ocasiões. Eu credito a ideia a Joshua Goldberg .

candied_orange
fonte
2
Tive esse problema com um projeto Gradle dentro do VS Code. Reabrir consertou.
TastyWheat
abrir e fechar o arquivo no editor do Eclipse ajudou a resolver o problema. Eu tinha adicionado uma pasta de código-fonte em java config build - guia source, o erro não foi removido, mas quando fechei e abri o editor no eclipse, ajudou. :-)
JassJava
44

Solução 1: Uma solução que funcionou para mim quando este erro " O pacote declarado não corresponde ao pacote esperado " ocorreu para um projeto que fiz check-out do Eclipse CVS:

1.Clique com o botão direito do mouse no projeto na barra de navegação e clique em 'excluir'
2. Certifique-se de que a opção ' Excluir conteúdo do projeto no disco ' NÃO esteja marcada e clique em OK.
3.Agora, depois que o projeto for excluído, vá para Arquivo -> Importar -> Geral -> Projetos Existentes na Área de Trabalho
4.Selecione sua área de trabalho na lista de diretórios e marque a caixa ao lado do nome do projeto. Clique em ' Concluir '

Solução 2: mais uma vez, recebi este erro com a seguinte mensagem

Erros de compilação do Eclipse - java.lang.Object não pode ser resolvido. Tive que seguir outra rota mencionada aqui e o erro foi embora.

Enquanto isso, a solução alternativa é remover a Biblioteca do sistema JRE do projeto e, em seguida, adicioná-la novamente. Aqui estão as etapas:

  1. Vá para as propriedades do projeto com o erro de construção (clique com o botão direito> Propriedades) Visualize a guia "Bibliotecas" na seção "Caminho de construção" Encontre a "Biblioteca do sistema JRE" na lista (se estiver faltando, então esta mensagem de erro não é uma bug do eclipse, mas um projeto mal configurado)
  2. Remova a "Biblioteca do Sistema JRE"
  3. Clique em "Adicionar Biblioteca ...", selecione "Biblioteca do Sistema JRE" e adicione o JRE apropriado para o projeto (por exemplo, 'Espaço de Trabalho JRE padrão')
  4. Pressione "Concluir" na seleção da biblioteca e "OK" nas propriedades do projeto e aguarde a reconstrução do projeto

Espero que o erro seja resolvido ...

nanospeck
fonte
Eu tive que fazer isso também (adicionando um diretório de testes bacanas à compilação). Não se esqueça de fazer anotações sobre as configurações de execução, que você precisará recriar. Alguma ideia de por que isso é necessário? Que dor.
Joshua Goldberg
10
Solução mais simples: eu estava nessa situação novamente e consegui fazê-la funcionar fechando o projeto, reiniciando o Eclipse e reabrindo o projeto.
Joshua Goldberg
12
Ainda mais simples! Acabei de tê-lo novamente, e ele foi embora fechando e reabrindo o editor do arquivo único problemático.
Joshua Goldberg
4
Reiniciar o eclipse parece consertar.
Mike R
A solução 1 funcionou para mim. Muito estranho. Importei o mesmo clone git para o Eclipse em outras máquinas e não vi esse problema.
dnuttle de
11

Eu tive este problema - as outras classes do meu pacote estavam bem, mas uma classe tinha o erro contra ela. Não havia nada de errado com a declaração do pacote.

Corrigi-o fazendo refactor->movee movi a classe para outro pacote temporariamente, depois de refactor->movevolta ao pacote original.

ayahuasca
fonte
11

Resolvi o problema seguindo estas etapas:

  1. Selecione o projeto - clique com o botão direito - caminho de construção java.

  2. Na guia fonte - você altera o srcpara src/main/java.

  3. Eclipse irá reordenar todo o projeto.

Dafali
fonte
2

Você precisa ter a classe dentro de uma pasta Devices.

Marcelo
fonte
2

Crie um novo pacote em seu projeto chamado "Dispositivos" e coloque sua classe nele. Isso é equivalente à classe sendo colocada em um diretório chamado "Dispositivos" na pasta de origem do projeto.

tskuzzy
fonte
1

Certifique-se de que Devicesestá definido como uma pasta de origem nas propriedades do projeto.

Adam Matan
fonte
1

Recebi o mesmo tipo de erro, mas meu pacote estava absolutamente correto. Quando acabo de fechar e abrir meu editor, o erro desaparece. Espero que isso possa ajudar em alguns cenários.

Easwaramoorthy K
fonte
1

Corrigi isso removendo um atributo de "exclusão" para esse pacote em meu .classpatharquivo. Remova o atributo, não a tag inteira, ou "src / java" deixará de ser uma pasta de origem.

<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>
Noumenon
fonte
0

Certifique-se de ter criado um pacote correto. Você pode ter a chance de criar uma pasta em vez de um pacote

Karthick
fonte
0
  1. Crie o diretório [your.project.name] no diretório raiz da área de trabalho do seu projeto.

  2. Copie * .java de "src" para esse diretório.

  3. Feche e reabra o projeto.

B347tl7
fonte
0

Isso aconteceu comigo quando eu estava fazendo check-out de um projeto de um repositório svn no Eclipse. Havia arquivos jar na minha pasta .m2 que o eclipse não estava olhando. Para corrigir o problema que fiz:

clique com o botão direito na pasta do projeto Configurar> Converter para Projeto Maven

e isso resolveu o problema.

carl_corder
fonte
0

Há um milhão de respostas, mas aqui está outra: copie os arquivos em um novo pacote, exclua o pacote antigo e renomeie o novo pacote com o nome do pacote antigo.

Omri374
fonte
0

Certifique-se de não estar usando o pacote padrão. Crie um novo pacote com o nome 'dispositivos' e copie este código dentro dele e use.


fonte
0

Eu tive esse tipo de situação quando copiei classes de outros pacotes / projetos.

Menu-> Projeto-> Limpar geralmente ajuda.

Yurin
fonte
0

No meu caso, selecionei o marcador de erro na aba Problemas e o apaguei, pois o método principal do arquivo Java estava sendo executado corretamente. Essa é uma falha no Eclipse Neon com a infinidade de plug-ins instalados.

Leniel Maccaferri
fonte
0

Eu também enfrentei esse problema quando importei um projeto existente para eclipsar. Era um projeto do Gradle, mas durante a importação, importei-o como projeto normal clicando em Geral-> Projetos Existentes no Espaço de Trabalho. Para resolver o problema, adicionei a natureza do Gradle ao projeto: :::: Clique com o botão direito na pasta Projeto -> Configurar-> Adicionar natureza do Gradle

Gopi
fonte
0

Eu estava usando o Spring Tool Suite 4. Não é possível descobrir o problema. A estrutura do diretório estava de acordo com o nome do pacote.

Mas limpar o projeto me ajudou.

prisar
fonte
0

Este problema foi resolvido mencionando o pacote nome do

Mudei meu arquivo Test_Steps.java que estava sob o pacote stepDefinition

insira a descrição da imagem aqui

apenas adicionando o pacote stepDefinition o problema foi resolvido

Portanto, esse problema pode ocorrer quando você tem um pacote e não está usando em seu arquivo de classe.

Adicioná-lo resolveu o problema e o erro não estava mais aparecendo.

insira a descrição da imagem aqui

Gaurav khurana
fonte