2015-03-31 239 views
1

我必須使用EMF項目並需要使用另一個包中的某些類。 當我嘗試用Maven構建生成的代碼我得到這個故障:Maven編譯EMF項目失敗

[INFO] 6 errors 
[INFO] ------------------------------------------------------------- 
[INFO]------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO]------------------------------------------------------------------------ 
[INFO] Total time: 2.844 s 
[INFO] Finished at: 2015-03-31T16:25:42+02:00 
[INFO] Final Memory: 14M/163M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project datamodel: Compilation failure: 
Compilation failure: 
[ERROR] /C:/.../util/ModelSwitch.java:[20,34] cannot find symbol 
[ERROR] symbol: class Switch 
[ERROR] location: package org.eclipse.emf.ecore.util 
[ERROR] /C:/.../util/ModelSwitch.java:[85,38] cannot find symbol 
[ERROR] symbol: class Switch 
[ERROR] /C:/.../util/ModelSwitch.java:[114,9] method does not override or implement a method from a supertype 
[ERROR] /C:/.../util/ModelSwitch.java:[126,9] method does not override or implement a method from a supertype 
[ERROR] /C:/.../util/ModelSwitch.java:[1341,9] method does not override or implement a method from a supertype 
[ERROR] /C:/.../util/ModelAdapterFactory.java:[365,35] method doSwitch in class com...util.ModelSwitch<T1> cannot be applied to given types; 
[ERROR] required: int,org.eclipse.emf.ecore.EObject 
[ERROR] found: org.eclipse.emf.ecore.EObject 
[ERROR] reason: actual and formal argument lists differ in length 

所有庫都是進口的POM,但它仍然有與生成ModelSwitch類的問題。

這個錯誤和事實,Eclipse月神是越野車,因爲地獄讓我發瘋!有人可以幫我解釋一下如何解決這個問題嗎?

+0

你可以發佈你的pom.xml文件,或者至少是相關的位? – EA91 2015-03-31 14:48:28

+1

如果我沒有記錯,在最近的EMF版本中'Switch'類已經改變了。你確定'pom.xml'中的版本與用於在Eclipse中生成這些文件的版本相匹配嗎? – 2015-03-31 14:50:01

+0

@tobias_k你能發佈一個鏈接到這個版本的參考嗎? – Hendrik 2015-03-31 14:54:46

回答

0

看一看的different version in the repository。似乎EMF在很久以前就重新命名了他們的工件。取而代之的是(類似於您的其他EMF的依賴):

<dependency> 
    <groupId>org.eclipse.emf</groupId> 
    <artifactId>ecore</artifactId> 
    <version>2.6.1.v20100914-1218</version> 
</dependency> 

嘗試使用這種形式(注意不同artifactId):

<dependency> 
    <groupId>org.eclipse.emf</groupId> 
    <artifactId>org.eclipse.emf.ecore</artifactId> 
    <version>2.11.0-v20150123-0347</version> 
</dependency> 

在這裏,很多較新的版本可用。對我來說,2.8以上的每個版本似乎都起作用。你也可以使用一個範圍,以獲得最新版本:

<version>[2.8.0,2.99.99]</version> 
+0

謝謝你們。它現在似乎工作。 – Hendrik 2015-04-02 07:50:04

0

這些都是你的組件的最新版本,據我可以告訴

<dependency> 
    <groupId>org.eclipse.emf</groupId> 
    <artifactId>ecore</artifactId> 
    <version>2.3.0-v200706262000</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.emf</groupId> 
    <artifactId>common</artifactId> 
    <version>2.3.0-v200706262000</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.emf</groupId> 
    <artifactId>org.eclipse.emf.ecore.xmi</artifactId> 
    <version>2.11.0-v20150123-0347</version> 
</dependency>