2012-10-12 76 views
0

我有一個類,我在OSX(Java 1.6)上的eclipse中的標準java項目中編寫代碼。該類使用另一個庫中的類和接口。
我選擇類,然後做運行> Java應用程序,並運行良好。NoClassDefFoundError將簡單的java項目轉換爲eclipse中的maven項目

之後,我嘗試運行我的項目作爲Maven項目和事情開始變得有點沮喪。我在這裏總結的所有步驟希望有人告訴我什麼,我做錯了: - 從標準的Java項目我右鍵單擊並執行配置>轉換爲Maven項目並單擊芬蘭語。迄今爲止都很好。

  • 然後構建路徑>配置構建路徑>並添加包含我的項目的文件夾。仍然不錯

  • 然後,我刪除了所有的@Override註釋,因爲我在SO上讀過某處,Maven使用JDK 1.5而不是1.6。無論如何,我將它們移走,我的紅旗消失。在這一點上我的班級看起來完全像在原始的Java項目(除了@override,我刪除)

  • 然後我做Maven>乾淨。我獲得成功

  • THEN Maven> Install。我得到一個構建成功

  • 然後我選擇我的課,做運行方式> Java應用程序,我得到這個難看的痕跡:在線程

    異常「主要」 java.lang.NoClassDefFoundError:LMAXTrading /交易算法/在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:202) LMAXTrading.algos.HeartbeatClient 在java.security.AccessController.doPrivileged(本機方法) 是java:HeartbeatClient 造成的:拋出java.lang.ClassNotFoundException。 net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Lau ncher $ AppClassLoader.loadClass(Launcher.java:301) 在java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我不知道在哪裏可以從這裏走。你可以想象,我經歷了很多嘗試和錯誤,並在SO和其他地方搜索,找到一種方法來實現這一目標。但我無法弄清楚什麼是錯的。所以如果有人有一個想法,我很樂意傾聽。

我下面粘貼從導航查看我的目錄佈局,以及從Package Explorer視圖

layout Navigator view

enter image description here

這裏是我已經添加了JRE中的pom.xml config

<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>someproject</groupId> 
    <artifactId>someproject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 
+2

Maven可以使用任何版本的Java。你誤會了這個 - 只需配置'maven-compiler-plugin'。 –

+1

您是否在pom.xml中添加了必要的Maven依賴項? –

+0

考慮到已經發生了多少變化,從Eclipse菜單中執行Project> Clean可能是值得的。 –

回答

7

項目目錄結構與默認的Maven direc不匹配tory結構。 Maven預計源文件夾位於根文件夾(包含pom.xml的文件夾)下的src/main/java目錄中。這裏的來源是src文件夾,因此No sources to compile錯誤。

您可以將您的源使用默認的Maven目錄結構或改變pom.xml通過添加明確指定源目錄下面的POM的build部分:在Maven的

<sourceDirectory>${basedir}/src</sourceDirectory> 

更多信息標準目錄佈局可以找到here

+0

我已經將 src添加到POM,並且構建進展到這一點:「[錯誤] mypath/someproject/src/LMAXTrading/algos/HeartbeatClient.java:[ 3,19] package com.lmax.api不存在。「這是一個在MYLYBRARIES庫中的jar包(根據我上面的截圖)。是否還有另一個源,我應該添加到POM爲該庫自動獲取? – jule64

+0

@ jule64您需要將這些庫作爲依賴項添加到Maven POM中。閱讀關於如何做到這一點的Maven文檔。 –

+0

謝謝!它現在有效。哇,這很痛苦。配置>轉換爲Maven項目選項的功能與破碎的咖啡機非常相似。感謝所有您的有益建議。 – jule64

相關問題