Mavenプロジェクトをインポートし、EclipseのデフォルトPreferences->Java->Installed JREs
として1.6が構成されていても、Java 1.5を使用しました。
Mavenプロジェクトを1.6 JREを使用するように変更したとき、プロジェクトでJava 1.5を使用していたときからビルドエラーが残っていました(これらのビルドエラーについては前に説明しました: ビルドエラーがありますコマンドラインでm2Eclipseを使用してmaven2を使用しない-私のm2Eclipseは誤って設定されていますか? )
プロジェクトを削除して再試行しますが、今回は最初からJava 1.6を使用して、ビルドの問題が解消されるかどうかを確認します。
プロジェクトをインポートするときに、プロジェクトがJava 1.6を使用していることを確認するにはどうすればよいですか?
M2EclipseプラグインはEclipseのデフォルトを使用せず、m2EclipseプラグインはPOMから設定を取得します。そのため、EclipseでインポートするときにJava 1.6設定を使用するようにMavenプロジェクトを構成する場合は、既に提案したようにmaven-compiler-plugin
を適切に構成します。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
プロジェクトがすでにインポートされている場合は、プロジェクト構成を更新します(右クリックプロジェクトで、次にMaven Vプロジェクト構成の更新)。
これをプロジェクトの説明の下のpom.xmlに追加しましたが、うまくいきました。
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
すでに提供されている答えに何かを追加したかった。 maven-compiler-plugin デフォルトでは、m2eが情報を取得するJava 1.5を使用してプロジェクトをコンパイルします。
そのため、プロジェクトで maven-compiler-plugin を1.5以外のもので明示的に宣言する必要があります。効果的なpom.xml
は、 maven-compiler-pluginpom.xml
のデフォルトセットを暗黙的に使用します。
<project>
<!-- ... -->
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Java 1.5の根本的な原因は次のとおりです。
また、Mavenを実行するJDKに関係なく、現在のデフォルトのソース設定は1.5であり、デフォルトのターゲット設定は1.5です。これらのデフォルトを変更する場合は、ソースとターゲットを設定する必要があります。
リファレンス: Apache Mavem Compiler Plugin
詳細は次のとおりです。
プレーン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>com.pluralsight</groupId>
<artifactId>spring_sample</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
次のプラグインは、拡張されたPOMバージョン(有効なPOM)から取得されます。
これは、コマンドラインC:\mvn help:effective-pom
からこのコマンドで取得できます。pom全体ではなく、小さなスニペットをここに配置します。
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
ここでも、Javaバージョンがどこに定義されているかわかりません。Digをもっと...
プラグイン、 Apache Maven Compiler Plugin"3.1 をjarで利用可能としてダウンロードし、 7-Zip のようなファイル圧縮ツールで開きます。
Jarをトラバースして調査する
plugin.xml
フォルダー内のファイル
maven-compiler-plugin-3.1.jar\META-INF\maven \
これで、ファイルに次のセクションが表示されます。
<configuration>
<basedir implementation="Java.io.File" default-value="${basedir}"/>
<buildDirectory implementation="Java.io.File" default-value="${project.build.directory}"/>
<classpathElements implementation="Java.util.List" default-value="${project.testClasspathElements}"/>
<compileSourceRoots implementation="Java.util.List" default-value="${project.testCompileSourceRoots}"/>
<compilerId implementation="Java.lang.String" default-value="javac">${maven.compiler.compilerId}</compilerId>
<compilerReuseStrategy implementation="Java.lang.String" default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy>
<compilerVersion implementation="Java.lang.String">${maven.compiler.compilerVersion}</compilerVersion>
<debug implementation="boolean" default-value="true">${maven.compiler.debug}</debug>
<debuglevel implementation="Java.lang.String">${maven.compiler.debuglevel}</debuglevel>
<encoding implementation="Java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</encoding>
<executable implementation="Java.lang.String">${maven.compiler.executable}</executable>
<failOnError implementation="boolean" default-value="true">${maven.compiler.failOnError}</failOnError>
<forceJavacCompilerUse implementation="boolean" default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
<fork implementation="boolean" default-value="false">${maven.compiler.fork}</fork>
<generatedTestSourcesDirectory implementation="Java.io.File" default-value="${project.build.directory}/generated-test-sources/test-annotations"/>
<maxmem implementation="Java.lang.String">${maven.compiler.maxmem}</maxmem>
<meminitial implementation="Java.lang.String">${maven.compiler.meminitial}</meminitial>
<mojoExecution implementation="org.Apache.maven.plugin.MojoExecution">${mojoExecution}</mojoExecution>
<optimize implementation="boolean" default-value="false">${maven.compiler.optimize}</optimize>
<outputDirectory implementation="Java.io.File" default-value="${project.build.testOutputDirectory}"/>
<showDeprecation implementation="boolean" default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
<showWarnings implementation="boolean" default-value="false">${maven.compiler.showWarnings}</showWarnings>
<skip implementation="boolean">${maven.test.skip}</skip>
<skipMultiThreadWarning implementation="boolean" default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
<source implementation="Java.lang.String" default-value="1.5">${maven.compiler.source}</source>
<staleMillis implementation="int" default-value="0">${lastModGranularityMs}</staleMillis>
<target implementation="Java.lang.String" default-value="1.5">${maven.compiler.target}</target>
<testSource implementation="Java.lang.String">${maven.compiler.testSource}</testSource>
<testTarget implementation="Java.lang.String">${maven.compiler.testTarget}</testTarget>
<useIncrementalCompilation implementation="boolean" default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
<verbose implementation="boolean" default-value="false">${maven.compiler.verbose}</verbose>
<mavenSession implementation="org.Apache.maven.execution.MavenSession" default-value="${session}"/>
<session implementation="org.Apache.maven.execution.MavenSession" default-value="${session}"/>
</configuration>
上記のコードを見て、次の2行を見つけてください
<source implementation="Java.lang.String" default-value="1.5">${maven.compiler.source}</source>
<target implementation="Java.lang.String" default-value="1.5">${maven.compiler.target}</target>
幸運を。
JREはおそらく実行構成で定義されています。 Eclipseで次の手順に従って、ビルドJREを変更します。
1)プロジェクトを右クリックして、Run As> Run Configurationsを選択します
2)[実行構成]ウィンドウの左側のパネルでプロジェクトビルド構成を選択します。右側には、メイン、JRE、更新、ソースなどのさまざまなタブが表示されます。
3)[JRE]タブをクリックすると、次のように表示されます。
4)デフォルトでは、Work Default JRE(Preferences-> Java-> Installed JREsでデフォルトとして選択したJRE)が使用されます。別のインストール済みJREを使用する場合は、Alternate JREチェックボックスをオンにして、ドロップダウンから希望のJREを選択します。
Springbootの最も簡単なソリューション
Springbootを使用する場合は、最も簡単なものを提供します。
<properties>
<Java.version>1.8</Java.version>
</properties>
次に、Eclipseプロジェクトを右クリックします。Maven>プロジェクトの更新> pom.xmlからのプロジェクト構成の更新
それでいいはずです。
これがうまくいかないもう1つの場所は、Eclipseのプロジェクト固有の設定です。
プロジェクトプロパティ:プロジェクトと次のいずれかをクリックします。
「Javaコンパイラ」をクリックします
クライアントの要件により、プロジェクトを1.6に維持できるようにしました。 1.7にアップグレードする必要があったとき、Javaバージョンを全面的に変更する必要があったため、苦労しました。
私の問題は、誰かがデフォルトのJREとしてJava1.5への参照を持つファイル.projectと.classpathをコミットしたことであることがわかりました。
<classpathentry kind="con" path="org.Eclipse.jdt.launching.JRE_CONTAINER/org.Eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="owner.project.facets" value="Java"/>
</attributes>
</classpathentry>
プロジェクトを閉じ、ファイルを削除してからMavenプロジェクトとして再インポートすることで、ワークスペースJREまたは関連するjdkを1.5に戻さずに使用するようにプロジェクトを適切に設定できました。したがって、.projectファイルと.classpathファイルをSVNにチェックインしないでください。
これが他の人の役に立つことを願っています。
TychoおよびMavenを使用してバンドルを構築している場合、マニフェストファイル(Bundle-RequiredExecutionEnvironment
)に間違った実行環境(manifest.mf
)があるため、考えられるもう1つの理由] _)定義済み。例えば:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Engine Plug-in
Bundle-SymbolicName: com.foo.bar
Bundle-Version: 4.6.5.qualifier
Bundle-Activator: com.foo.bar.Activator
Bundle-Vendor: Foobar Technologies Ltd.
Require-Bundle: org.Eclipse.core.runtime,
org.jdom;bundle-version="1.0.0",
org.Apache.commons.codec;bundle-version="1.3.0",
bcprov-ext;bundle-version="1.47.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.5
Export-Package: ...
...
Import-Package: ...
...
私の場合、他のすべては大丈夫でした。コンパイラプラグイン(通常のmavenおよびtychoも)は正しく設定されましたが、m2はマニフェストのために古いコンプライアンスレベルを生成しました。私は経験を共有すると思った。
JDKのバージョンを変更するには、次のようにします。
1-プロジェクト>プロパティ
2- Javaビルドパスに移動
3-ライブラリで、JRE System ...を選択し、編集をクリックします
4-適切なバージョンを選択して検証する
Eclipseで新しく作成されたプロジェクトまたはインポートされたプロジェクトがJava 1.5とは別のデフォルトのJavaバージョンを使用するようにしたい場合は、maven-compiler-pluginの構成を変更できます。
次の行で:
<source implementation = "Java.lang.String" default-value = "1.5"> $ {maven.compiler.source} </ source>
<target implementation = "Java.lang.String" default-value = "1.5"> $ {maven.compiler.target} </ target>
default-valueを1.6または1.8または任意の値に変更します。
これ以降、すべての新しいMavenプロジェクトは、指定したJavaバージョンを使用します。
情報は、次のブログ投稿からのものです: https://sandocean.wordpress.com/2019/03/22/directly-generated-maven-projects-in-Eclipse-with-Java-version-newer-than- 1-5 /