Spring/Vaadin/Hibernateアプリケーションを開発しています。
すべてが動作しますが、Eclipse STS 2.8.1にはまだ次のエラーマーカーがあります。
The hierarchy of the type BankView is inconsistent
The hierarchy of the type AbstractEntityView is inconsistent
ビューには次の構造があります。
public class BankView extends AbstractEntityView {
@Resource private BankService bankService;
public void buildLayout() {
super.buildLayout();
// Use of the service here
}
}
public abstract class AbstractEntityView extends AbstractView {
public void buildLayout() {
verticalLayout = new VerticalLayout();
verticalLayout.setSpacing(true);
verticalLayout.setSizeFull();
setContent(verticalLayout);
super.buildLayout();
}
}
@Configurable(preConstruction = true)
public abstract class AbstractView extends com.vaadin.ui.VerticalLayout {
public AbstractView() {
super();
try {
buildLayout();
}
catch (AccessDeniedException e) { // Spring Security
System.out.println("GTFO !");
}
}
}
これらのエラーマーカーの原因は何ですか?
実際、問題はAbstractListViewを@Configurableにしたためです。この注釈を最終クラス(BankViewなど)に配置すると、すべてのエラーが消えました。
助けてくれてありがとう。誰かが同じエラーを持っている場合、彼らは異なる答えで解決策を見つけます。
私の場合、The hierarchy of the type ... is inconsistent
ビルドパスにないクラスを参照するクラスを拡張しているjarファイルクラスが原因のEclipseのエラー。
あなたが持っている場合:
// in other.dep.jar
class FromOtherDepJar {}
// in dep.jar
class FromDepJar extends FromOtherDepJar {}
// in the current project
class ProblematicClass extends FromDepJar {}
dep.jar
はプロジェクトのクラスパスにありますが、other.dep.jar
はそうではありません。EclipseはThe hierarchy of the type ... is inconsistent
エラー。
Eclipseの問題ビューを見てください。説明列は、実際の問題がホバーオーバーよりも詳細になっています。
日食を閉じたり開いたりしようとしましたか?時々役立つ。私のEclipseは(おそらくWindowsプラットフォームにいるため)そのようなエラーをしばしば表示しますが、唯一の解決策はEclipseを終了して後で開くことです。
別の原因は、存在しているが別のパッケージにあり、インポートも完全修飾もされていないスーパークラスまたはスーパーインターフェースへの参照です。
これは、Eclipseリファクタリングを使用して、ネストされたインターフェイスから継承した抽象クラスを移動した後に発生しました。移動後、すべてのサブクラスに「X型の階層が矛盾しています」というメッセージが表示されました。この問題は、移動した抽象クラスを手動でインポートすることで解決しました。
私の問題は、antおよびgradleタスクを使用してEclipseの外部でクラス/ jarを手動で再コンパイルしたことでした。すべてのプロジェクトを更新し、Eclipseで再構築すると、エラーがなくなりました。
ビルドパスを再構成して問題を解決します。
このエラーを解決しましたServiceControllerタイプの階層に一貫性がありません問題削除 all Referenced Libraries
of jars in Build Path
そして、Eclipse IDEですべてのjarを再追加します。
それらは、Mavenの依存関係が認識されない可能性があります。この特定のプロジェクトでMavenが有効になっているかどうかを確認してください。 Eclipseでは、プロジェクトを右クリックしてMavenを選択し、Maven依存関係を有効にすることでMavenをアクティブにできます。
私の場合、間違ったJREバージョンを使用していました。
私はこれがおそらくここではないことを知っていますが、追加情報のために、インターフェイスの階層を使用しているときにこのエラーが発生する可能性があり、階層のどこかに高いエラー(ジェネリックが間違っているなど)がある
行って、実際にビルドパスを確認し(プロジェクトプロパティ=> Java Build Path => Libraries))、ダイアログに何かが欠けていることが表示される場合があります。その後、1、2か月後にJREセットアップが変更されたため、動作しなくなりました。
Javax.servlet-api-3.0.1.jarを追加して、この問題を解決しました。私の開発ツールはEclipseですが、私のプロジェクトはmyeclipseの下で開発されたので、プロジェクトをEclipseにインポートすると、「SysUserFilter型の階層が矛盾しています」がスローされるため、myeclipseは自動的にjavax.servlet-api-3.0を提供すると思います.1.jar、ただしEclipseではないため、手動でインポートする必要があります。
このエラーは、Androidサポートライブラリの不一致が発生した場合にも表示されます。使用する2つの外部ライブラリに2つのバージョンのサポートライブラリがある場合、このエラーが表示されます。これにサードパーティのライブラリ)
ActionbarsherlockをAndroidプロジェクトに追加し、元のプロジェクトからsupport-libraryを削除するのを忘れたとき、この問題が発生しました。プロジェクトからAndroid-support-v4.jarを削除して、プロジェクト.. actionbarsherlockフォルダからライブラリをロードする必要があります。