2015-03-31 154 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>