0

マルチモジュールのMavenプロジェクトがあります。mvn clean installいくつかの依存関係をダウンロードしてインストールする例の1つを実行します。

MavenによってダウンロードおよびコンパイルされたWEB-INF/libから特定のjarファイルを実行する$ file WhateverClass.classと、取得し続けます

WhateverClass.class: compiled Java class data, version 51.0

これは、クラスがJava7でコンパイルされていることを意味します。

最初にそのモジュールを単独でコンパイルした回数に関係なく、これを取得します。なんで?また、ターゲットフォルダーがどのように生成されたかを確認した後、モジュール自体の.classファイルも確認しました。

プロジェクトに沿って、いくつかのPOM.xml指定

<configuration>
  <source>1.5</source>
  <target>1.5</target>
</configuration>

しかし、より高いJavaバージョンを指定するものはありません。

私のJavaバージョンは次のとおりです。

java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10)
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)

およびjavacバージョン:

javac 1.6.0_23

編集

これが私の効果的なpomです

4

1 に答える 1

0

このような問題が発生した場合は、問題の切り分けを試みてください。最初のステップは、JAR のパスを逆方向にたどることです。クラスはどこで見つかりましたか? そのJARはどこから来たのですか?それが WAR から来た場合、それはどこから来たのですか? .classファイルがコンパイルされているコンピューターが見つかるまで、これを行います。フォルダー内の JAR と.classファイルを確認しtarget/classes/ます。

Java 7 が表示されたら、各ステップで実行fileWhateverClass.class、さらに一歩進んでください。

ビルド コンピューターが見つかったら、次のオプションを使用してビルド プロセスをデバッグできます。

  • mvn -vMaven と Java のバージョンを表示します。
  • mvn help:effective-pom解決されたPOMを示します(つまり、すべての親POMを含め、すべてのプロパティを解決した後、名前を付けます)。どのtargetオプションが有効ですか?
  • で実行mvn-Xて、デバッグ出力を取得します。これは、Maven がフォークされたプロセスに渡すオプションを確認するのに役立ちます。
于 2012-10-18T13:00:36.860 に答える