Eclipse: O pacote declarado não corresponde ao pacote esperado

86

Estou com problemas para importar um projeto externo. Eu vou Arquivo -> Importar ... -> Projetos existentes no espaço de trabalho, escolho a pasta onde o projeto está localizado e tudo é importado - mas os nomes dos pacotes do projeto não parecem ser o que o Eclipse espera. Todos os nomes dos pacotes têm um prefixo:

prefix.packagename1
prefix.packagename2

etc.

Mas Eclipse espera

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

etc. porque o diretório é src / prefix1 / prefix / package1

Eu realmente não quero mexer com código externo. Como digo ao Eclipse para ignorar o diretório "src / prefix1"? Ou o que mais posso fazer?

HenryNguyen
fonte
Eu adicionei package (name of package under which the file to be ) no início do arquivo
Sai Ram

Respostas:

105

Basta entrar no caminho de construção e alterar o caminho de origem para ser em src/prefix1vez de src.

Pode ser mais fácil clicar com o botão direito do mouse no srcdiretório e selecionar "Build Path / Remove from build path", então encontrar o src/prefix1diretório, clicar com o botão direito nele e selecionar "Build Path / Use as source folder".

Jon Skeet
fonte
2
Como faço para desfazer tudo o que acabou de fazer? Cliquei em "Build Path / Use as source folder" e nada funciona mais. Edit: A resposta à minha pergunta é ir em "Configure Build Path" e remover a coisa funky da lista que não é src / ou gen /
ArtOfWarfare
25
Observe que a sugestão de Jon funciona, mas pode ser necessário reiniciar o eclipse.
Samik R
1
!! Se você ainda vir o erro após alterar a pasta de origem, crie o projeto. Eclipse às vezes me dá vontade de quebrar alguma coisa.
MattC
4
Fechar / Abrir prj funcionou para mim ... Eclipse é uma grande ferramenta, às vezes pode esquecer as coisas
niken
Obrigado amigo, ótima solução.
Runcorn
70

Acabei de encontrar esse problema e, como a solução do Sr. Skeet não funcionou para mim, vou compartilhar como resolvi esse problema.

Acontece que eu abri o arquivo java sob o 'src' antes de declará-lo um diretório de origem.

Após clicar com o botão direito no diretório 'src' no eclipse, selecionar 'build path' e, em seguida, 'Usar como pasta de origem'

Feche e reabra o arquivo javaaberto (F5 para atualizar não funcionou).

Fornecido o caminho para o arquivo java de "prefixo1" em diante alinhado com o pacote no arquivo (exemplo da pergunta do solicitante prefix1.prefix.packagename2). Isso deve funcionar

Eclipse não deve mais reclamar de 'src.'

Kyle Shanafelt
fonte
1
Era isso. Muito simples, mas me deixou preso por um tempo. Obrigado!
Christian Vielma
Depois de definir o caminho de construção, fechar e reabrir o arquivo também foi necessário para mim. Obrigado!
ed-
Sim! Funcionou para mim também.
Robert Casey,
11

Mova seus arquivos * .java problemáticos para outra pasta.

Clique no item 'src' e pressione "F5".

As cruzes vermelhas desaparecerão.

Retorne seus arquivos * .java para "caminho do pacote", clique no item 'src' e pressione "F5".

Tudo deve estar bem.

Vlad
fonte
2

Se você importou um projeto existente, apenas remova suas pastas de origem e, em seguida, inclua-as novamente no caminho de construção e reinicie o eclipse. Na maioria das vezes, o eclipse continuará mostrando o erro até que você reinicie.

Parveen Yadav
fonte
1

Acontece para mim depois que compilações com falha são executadas fora do IDE. Se a limpeza do seu espaço de trabalho não funcionar, tente: 1) Exclua todos os projetos 2) Feche e reinicie o STS / eclipse, 3) Reimporte os projetos

Bradley D
fonte
1

A única coisa que funcionou para mim foi excluir o projeto e importá-lo novamente. Funciona como um encanto :)

Magro
fonte
0

Eu tenho esse problema no Eclipse às vezes ao importar um projeto Android que não tem um arquivo .classpath. O que o Eclipse cria não é exatamente o mesmo que o Android espera. Mas, os arquivos .classpath do Android são geralmente todos relativos, então eu apenas copio um arquivo .classpath correto de outro projeto sobre o .classpath incorreto. Criei um vídeo que mostra como faço isso: https://www.youtube.com/watch?v=IVIhgeahS1Ynto

user3649912
fonte
0

Suponha que seu projeto tenha um pacote como package name1.name2.name3.name4 (pacote declarado)

Seu explorador de pacotes mostra o
nível superior do pacote chamado name1.name2
subpacotes chamados name3.name4

Você terá erros porque o Eclipse extrai o nome do pacote da estrutura de diretório de arquivos no disco, começando no ponto de onde você importa.

Meu caso era um pouco mais complicado, talvez porque eu estava usando um link simbólico para uma pasta fora da minha área de trabalho.

Primeiro tentei Build Path.Java Build Path.Source Tab.Link Source Button.Browse até a pasta antes de name1 em seu pacote.Folder-name como você gosta (eu acho). Mas teve problemas.

Em seguida, removi a pasta do caminho de construção e tentei Arquivo> Importar ...> Geral> Sistema de arquivos> clique em Próximo> Do diretório> Navegar ... para a pasta acima de name1> clique no botão Avançado> marque Criar links no espaço de trabalho> clique em Concluir botão.

darKoram
fonte
Verdadeiro. No meu caso, o nome do projeto teve um postfix adicionado a ele, -2.0.0-SNAPSHOT. Removido esse prefixo (renomear projeto ..) e tudo funcionou.
JRun
0

Vá para a pasta src do projeto e copie todo o código dele para algum local temporário e construa o projeto. E agora copie o código real do local temporário para o projeto src. E execute o build novamente. O problema será resolvido.

Nota: Isso é específico para eclipse.

Deepak Gupta
fonte
0

Acontece que eu tenho o mesmo problema agora. No entanto, as primeiras respostas não funcionam para mim . Proponho uma solução: altere o arquivo .classpath. Por exemplo, você pode definir o caminho do nó classpathentry como este: path = "src / prefix1 / java" ou path = " src / prefix1 / resources ". Espero que possa ajudar.

Jack
fonte
0

Para mim, o problema era que eu estava convertendo um projeto existente em maven, criava as estruturas de pastas de acordo com a documentação e mostrava a pasta 'principal' como parte do pacote. Segui as instruções semelhantes a Jon Skeet / JWoodchuck e fui para o caminho de construção Java, removi todos os caminhos de construção quebrados e, em seguida, adicionei meu caminho de construção como 'src / main / java' e 'src / test / java', também como as pastas de recursos de cada um e resolveu o problema.

Douglas Larson
fonte
0

O caminho de construção deve conter o caminho 'até antes' do nome do pacote.

Por exemplo, se a estrutura da pasta for: src/main/java/com/example/dao Se a classe que contém a instrução import 'package com.example.dao'reclamar do erro de pacote incorreto, o caminho de construção deve. include:src/main/java Isso deve resolver o problema.

Sobin George
fonte
-1
  1. Clique com o botão direito na pasta externa que contém o pacote
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Clique em Caminho de construção -> Remover do caminho de construção.

  2. Agora vá para a pasta prefix1 na seção da pasta do seu projeto.

  3. Clique com o botão direito nele -> Caminho de construção -> Usar como pasta de origem.

  4. Feito. A pasta do pacote não mostrará nenhum erro agora. Se ainda aparecer, apenas reinicie o projeto.

Pramod Shetty
fonte