it-swarm-pt.tech

Erro de compilação do Eclipse: A hierarquia do tipo 'Nome da classe' é inconsistente

Eu fiz o download de alguns softwares de código aberto escritos em Java e tentei compilá-los usando o Eclipse. Recebi o erro: " A hierarquia do tipo 'Nome da classe' é inconsistente " em alguns arquivos. .____.] O que causa esses erros e como corrigi-los?

127
user1099579

Isso significa que você está tentando implementar uma interface não existente ou está estendendo uma classe inexistente.

Tente atualizar seu Eclipse.

Se não funcionar, pode significar que você tem uma referência a um JAR que não esteja no caminho de construção. Verifique o caminho de classe do seu projeto e verifique se o frasco que contém a interface ou a classe está nele.

146
LaGrandMere

Às vezes acontece quando você adiciona um jar que você precisa, mas não inclui os frascos de que o TI precisa. No meu caso, adicionando todos os jars no Tomcat/lib me ajudou a resolver este problema. Eu estou trabalhando em um aplicativo da web.

13
Ibolit

Verifique seus erros (aba "marcadores"). Eu também tive o seguinte erro:

O arquivo da biblioteca necessária no projeto não pode ser lido ...

e quando isso foi corrigido, o "erro inconsistente" desapareceu.

Na verdade, eu adicionei jars ao caminho de compilação, mas, por algum motivo, eles não puderam ser lidos com erro

O arquivo para a biblioteca necessária no projeto não pode ser lido ou não é um arquivo Zip válido

Então, em vez disso, adicionei-os como "External Jars". Isso ajudou e todos os problemas de compilação não eram mais!

11
Johan Valentin

Você deve limpar o projeto ou reiniciar o Eclipse.

4
Thuy Nguyen

Eu tive esse problema depois de atualizar o JDK para uma nova versão. Eu tive que atualizar as referências para bibliotecas em Propriedades do Projeto/Caminho de Construção Java.

4
jmst

Mais um caso que tive. Dê o caminho do projeto correto e importe-o para o Eclipse.

Em seguida, vá para Projeto -> Limpar -> Limpar todos os projetos.

3
Ashok Chakravarthi

O problema pode ser que você incluiu jars incorretos. Eu tive o mesmo problema e o motivo foi que eu tinha incluído a biblioteca JRE padrão incorreta no caminho de construção do projeto. Eu tinha instalado o Java com outra versão e estava incluindo arquivos JRE do Java com uma versão diferente. (Eu tinha instalado o JRE 1.6 em meu sistema e estava tendo a biblioteca JRE 1.7 incluída no caminho de construção devido ao Java instalado anteriormente). Pode ser que você possa verificar se a biblioteca JRE incluída no caminho de construção é da versão correta, isto é. da versão do Java que você instalou em seu sistema.

2
priti

Eu experimentei esse problema no Eclipse Juno, a causa raiz foi que, embora alguns frascos de mola estivessem sendo incluídos por dependências maven transitórias, eles foram incluídos em versões incorretas.

Portanto, você deve verificar se está usando uma estrutura modularizada como mola que todos os módulos (ou pelo menos os mais importantes: core, beans, context, aop, tx, etc.) estão na mesma versão.

Para resolver o problema, usei exclusões de dependenecy do maven para evitar versões incorretas de dependências transitórias.

2
Nicolas Barrera

Você verá este erro caso uma classe em seu arquivo de biblioteca que você tenha no caminho de classe tenha referência a classe (s) não existente (s) que poderia estar em outro arquivo jar. Aqui, recebi esse erro quando não adicionei org.springframework.beans-3.1.2.RELEASE.jar e estendi uma classe de org.springframework.jdbc.core.support.JdbcDaoSupport, que estava em org.springframework.jdbc-3.1.2.RELEASE.jar do meu classpath.

2
James Jithin

No meu caso, as referências de importação em muitas das classes continham um Word extra. Eu resolvi isso editando todos os arquivos para ter as importações corretas. Comecei a fazer as edições manualmente. Mas quando vi o padrão, eu o automatizei com um find..replace no Eclipse. Isso resolveu o erro.

1
CodeMed

Se a classe estendida tiver o problema, a mensagem de erro acima será exibida.

Exemplo 

class Example extends Example1 {

}

corrija os problemas em Example1

1
user3195324

Erro: a hierarquia do tipo "nome da classe" é um erro inconsistente.

solução: class OtherDepJar {} -> está dentro de "other.dep.jar" .

class DepJar extends OtherDepJar {} -> está dentro de "dep.jar" .

a classe ProblematicClass estende o DepJar {} -> dentro do projeto atual.

Se dep.jar estiver no caminho de classe do projeto, mas other.dep.jar não estiver no caminho de classe do projeto, o Eclipse mostrará "A hierarquia do tipo ... é um erro inconsistente"

1
vijay m p

Definitivamente porque faltavam dependências que não estavam no meu maven pom.xml.

Por exemplo, eu queria criar testes de integração para minha implementação do site demo de comércio eletrônico broadleaf. 

Eu tinha incluído um frasco de broadleaf com testes de integração do comércio de broadleaf para reutilizar seus arquivos de configuração e classes de testes básicos. Esse projeto tinha outras dependências de teste que eu não tinha incluído e recebi o erro "hierarquia inconsistente". 

Depois de copiar as "dependências de teste" de broadleaf/pom.xml e as variáveis ​​de propriedades associadas que forneciam as versões para cada dependência em broadleaf/pom.xml, o erro desapareceu.

As propriedades foram:

    <geb.version>0.9.3</geb.version>
    <spock.version>0.7-groovy-2.0</spock.version>
    <Selenium.version>2.42.2</Selenium.version>
    <groovy.version>2.1.8</groovy.version>

As dependências foram:

<dependency>
            <groupId>org.broadleafcommerce</groupId>
            <artifactId>integration</artifactId>
            <type>jar</type>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.broadleafcommerce</groupId>
            <artifactId>broadleaf-framework</artifactId>
            <version>${blc.version}</version><!--$NO-MVN-MAN-VER$ -->
            <classifier>tests</classifier>
        </dependency>
        <dependency>
            <groupId>com.icegreen</groupId>
            <artifactId>greenmail</artifactId>
            <version>1.3</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>2.5.1</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymockclassextension</artifactId>
            <version>2.4</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.9</version>
            <type>jar</type>
            <classifier>jdk15</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>${groovy.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.gebish</groupId>
            <artifactId>geb-core</artifactId>
            <version>${geb.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.gebish</groupId>
            <artifactId>geb-spock</artifactId>
            <version>${geb.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-core</artifactId>
            <version>${spock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-support</artifactId>
            <version>${Selenium.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-firefox-driver</artifactId>
            <version>${Selenium.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.Selenium</groupId>
            <artifactId>Selenium-chrome-driver</artifactId>
            <version>${Selenium.version}</version>
            <scope>test</scope>
        </dependency>
  <!-- Logging -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.6.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>1.6.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.6.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <version>2.3.1</version>
                <type>jar</type>
                <scope>test</scope>
            </dependency>
1
Bob

Para mim, o problema foi devido a importações erradas. Na verdade, é necessário atualizar as importações depois de incluir a biblioteca de suporte v7.

Pode ser corrigido fazendo o seguinte, para cada classe do seu projeto :

  1. Exclua todas as linhas com import Android.[*], em cada classe
  2. Reorganize suas importações: no menu de contexto, selecione Source/Organize Imports ou (CTRL + SHIFT + O)
  3. Quando solicitado, selecione as bibliotecas Android.support.[*] (e não Android.[*]).
1
Black Shell

Clique com o botão direito do mouse na pasta do projeto e selecione "Java Build Path". Em "Java Build Path", você poderá ver as bibliotecas. O Eclipse mostrará erros em qualquer uma dessas bibliotecas. Corrigir esses problemas ajudará a resolver o problema.

0
MR AND

se você estiver importando o projeto Eclipse apenas 1. Vá para a configuração do caminho de construção Java nas propriedades do projeto. 2. Caso a biblioteca do Sistema JRE tenha um sinal de erro anexado a ela, clique duas vezes nela para abrir a janela Editar biblioteca 3. Altere o ambiente de execução para a versão Java correta do sistema ou escolha editar as outras configurações, marcando os botões de opção atribuídos a elas. 4. Clique final 

0
mumbasa

Eu tive o mesmo marcador de problema exato e resolvi-o removendo a anotação @Orride de um método que era na verdade a primeira implementação (a "super" sendo um método abstrato) e não uma substituição.

0
Laurenţiu Lozan

Ao importar um projeto GWT no Eclipse sem instalar o "Plug-in do Google para o Eclipse", isso ocorrerá. Depois de instalar o "Plug-in do Google para o Eclipse", esse erro desaparecerá.

0
Tom

Eu tive uma classe que estende LabelProvider em um projeto com OSGi, lá o erro ocorreu. A solução era: Adicionar org.Eclipse.jface aos plug-ins necessários no manifest.mf em vez de importar os pacotes únicos como org.Eclipse.jface.viewers

0
Harry Siebert

Eu tive esse erro depois de fazer algum git merge de uma ramificação onde minhas classes estendiam uma nova interface. Era o suficiente para Atualizar (F5) a File-Tree no pacote Explorer frame do Eclipse.

Parece que o Eclipse não atualizou tudo adequadamente e, portanto, as classes estavam estendendo uma interface inexistente. Após a atualização, todos os erros desapareceram.

0
nhaggen

Eu estava tendo esse problema também ... Descobri que a hierarquia da classe que estava lançando essa exceção, não pode ser rastreada até a sua classe raiz pelo Eclipse ... Explico:

No meu caso, eu tenho 3 projetos Java: A, B e C ... onde A e B são projetos maven e C um projeto Java Eclipse regular ...

No projeto A, eu tenho a interface "interfaceA" ... No projeto B, eu tenho a interface "interfaceB" que extende "interfaceA" No projeto C, eu tenho o classe concreta "classC" que implementa "interfaceB"

O "projeto C" estava incluindo o "projeto B" em seu caminho de construção, mas não "projeto A" (então essa foi a causa do erro) .... Depois de incluir "projeto A" dentro do caminho de construção de "C" tudo voltou ao normal ...

0
Carlitos Way

Para mim, estava mudando o nível da API do Android para um com as APIs do Google

0
Fernando Gallego