2

OS:Ubuntu 12.10
Eclipse:4.2
Java:jdk1.5.0_22およびjdk1.7
Apache Maven:3.0.4
Mavenホーム:/ usr / share / maven
m2e:1.2.020120903-1050

独自のプロジェクト(1.5を使用)を移行するためにテストするために、Eclipseで非常に単純な「Hello、World」Mavenプロジェクトを作成しました。私のpom.xmlは次のとおりです。

<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>br.com.contmatic</groupId>
  <artifactId>maven-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>MavenTest</name>
  <description>teste do maven</description>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

プロジェクトのビルドパスにJ2SE-1.5(jdk1.5.22)を設定しました。それでも、Eclipse内からMavenCleanまたはMavenInstallを実行しようとすると、次のエラーが発生します。

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:386)
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at org.apache.maven.cli.MavenCli.container(MavenCli.java:375)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:191)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:592)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

グーグルで調べてみると、これは、コンパイルに使用されたjreバージョンが実行に使用されたバージョンと異なる場合に発生することがわかりました。すべてを1.7(pom.xmlとビルドパスの両方)に変更すると、エラーが修正されます。これは、Java1.7を使用してコンパイルまたは実行されることを示しています。

しかし、構成にエラーが見つからないようです。

走っているとき

mvn clean install

ターミナルでは、Mavenはエラーなしでプロジェクトをビルドします。

Eclipseで何が間違っている可能性がありますか?

4

1 に答える 1

2

Mavenの依存関係の一部が1.5でコンパイルされていないことが判明したため、問題が発生しました。私はすでにjava1.7をデフォルトとして設定していたので、コンソールでは発生しませんでした。

幸い、1.7を使用し、コンパイルと実行を実行するために1.5を指定して、プロジェクトをビルドすることができました。方法は次のとおりです。

Eclipse>実行>実行構成>Mavenビルド>新規で、私はこの構成を持っていました:

メインタブ

ベースディレクトリ:

${project_loc}

目標:

clean install

1.7 SDKインストールを使用して、[JRE]タブを選択し、[代替JRE]を選択しました。

次に、maven-compiler-pluginmypom.xmlのソースとターゲットとして1.5を含める必要がありました。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
                <encoding>ISO-8859-1</encoding>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>

そしてそれは動作します。

于 2013-02-26T19:10:45.970 に答える