2013-01-17 48 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> 

和它的作品。