これはおそらく初心者の質問ですが、私は物事を整理することができません。
IntelliJIDEAのSpringInitializrインターフェースを使用して、Spring BootJARベースのMavenプロジェクトを作成しました。WebおよびJDBCへの依存。プロジェクトの実行には、Tomcatの埋め込みインスタンスが使用されます。
関連するダイアログから問題なく追加する他のMaven依存関係もいくつかあります。また、Logbackのコピーを含むApache PhoenixシンクライアントJARを手動で追加します(Mavenリポジトリを機能させることはできませんが、これはこの質問に関連するとは思われません)。
私はプロジェクトを完璧に実行することができます。システムの再起動後(私はWindowsを使用しています)、エラーのカスケードが続きます。何よりもまず、ログバック間の競合を示す例外が発生します。
Exception in thread "main" java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from [...]). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory.
PhoenixクライアントJARを変更したくありません。指示に従ってLogbackへのSpringの依存関係を別のロガー(log4j2など)に置き換えることはできますが、埋め込まれたTomcatはコンテナーの作成に失敗します。
仕事に戻るには、プロジェクトを最初から作り直す必要があります。
実際の問題を特定するために、正しい方向に私を向けていただけませんか。ありがとうございました。
スクリプト後:潜在的に識別可能な情報を除いて、pom.xmlのコンテンツを添付しています。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>[RETRACTED]</groupId>
<artifactId>[RETRACTED]</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>[RETRACTED]</name>
<description>[RETRACTED]</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
まず、apache phoenixクライアント(またはその他の依存関係)を手動で追加するのではなく、それらをmaven pom.xmlに追加して、ビルド時にmavenが依存関係を解決するようにする必要があります。プロジェクトに依存関係があり、Mavenが解決に失敗している場合、これは解決する必要のある別の問題ですが、手動で追加することは、いくつかの理由から悪い習慣です。
フェニックスクライアントを依存関係として追加したら、依存関係宣言の一部としてslf4j-log4j12とlog4jを明示的に除外する必要があります。XMLは次のようになります。
<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.13.1-HBase-1.3</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
これらの必要性を除外する理由は、spring-bootプロジェクトにバンドルされているバージョンと競合しているためです。
うまくいけば、これはあなたの問題を分類するでしょう。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加