2013-01-17 22 views
2
在Eclipse中运行Maven项目

操作系统:Ubuntu的12.10
蚀:4.2
的Java:jdk1.5.0_22和jdk1.7
的Apache Maven的:3.0.4
Maven的家:在/ usr/share/maven
m2e:1.2.020120903-1050错误使用JDK1.5

我在Eclipse中创建了一个非常简单的“Hello,World”Maven项目,以测试它是否迁移我们自己的项目(使用1.5)。我的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)。 然而,试图运行Maven清洁或Maven在Eclipse安装,我得到以下错误:

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和build path)都会修正错误,这表明它可以编译或者使用java 1.7来运行。

但我似乎无法找到我的配置中的错误。

运行

mvn clean install 
在终端

时,Maven的建立没有错误的项目。

在Eclipse中我能做什么错?

回答

2

结果发现我的一些Maven依赖项没有用1.5编译,导致了这个问题。它不在控制台中发生,因为我已经将java 1.7设置为默认值。

幸运的是,我能够使用1.7构建我的项目并指定1.5来运行编译和执行。具体方法如下:Maven的

在Eclipse

>运行>运行配置>生成>新,我有这个配置:

主要选项卡

基本目录:

${project_loc} 

目标:

clean install 

我刚刚选择了JRE选项卡,并使用我的1.7 SDK安装选择了Alternate JRE。

接下来,我必须包括1.5作为源和目标的Maven的编译器插件我的pom.xml,因为这样的:

 <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> 

和它的作品。