GWT Maven Eclipse插件 – 由于重复类而导致编译失败

我正在使用Eclipse 3.5(Galileo)和m2eclipse以及安装的GWT Eclipse插件。 我使用gwt-maven-plugin原型创建了一个项目。 我创建了一个使用这些类定义的RPC服务:

my.package.client.DataService my.package.client.DataServiceAsync my.package.server.DataServiceImpl 

当我运行mvn clean ,目标目录被删除(如所示)。 当我运行gwt:compile gwt:run -X -e ,我得到错误:

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project MyProject: Compilation failure C:\Devel\EclipseProjects\MyProject\target\generated-sources\gwt\my\package\client\DataServiceAsync.java:[8,7] duplicate class: my.project.client.DataServiceAsync -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project MyProject: Compilation failure C:\Devel\EclipseProjects\MyProject\target\generated-sources\gwt\my\package\client\DataServiceAsync.java:[8,7] duplicate class: my.project.client.DataServiceAsync at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:581) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeForkedExecutions(DefaultLifecycleExecutor.java:685) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:560) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157) at org.apache.maven.cli.MavenCli.main(MavenCli.java:121) 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:597) 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) Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure C:\Devel\EclipseProjects\MyProject\target\generated-sources\gwt\my\package\client\DataServiceAsync.java:[8,7] duplicate class: my.project.client.DataServiceAsync at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:577) ... 16 more [ERROR] [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

失败后,目标目录已使用以下目录结构创建,其中的单个文件如下:

 MyProject/target/generated-sources/gwt/my/project/client/DataServiceAsync.java 

由于在运行gwt:compile gwt:run -X -e之前目标目录不存在,因此必须创建目录并将java类作为执行目标的一部分进行复制。 那么,为什么现在的目标会抱怨重复的课程呢?

任何帮助是极大的赞赏!

我发现这个post说:

如果手动创建Async接口,则必须在插件配置中禁用generateAsync目标

修复是从我的pom.xml中删除generateAsync 。 插件配置现在看起来像:

  org.codehaus.mojo gwt-maven-plugin 1.2    compile test     my.package.Application/Application.html   

您实际上可能已经生成了一个重复的类。

pom.xml中有一个“generateAsync”目标,它负责为您创建的每个服务生成异步类。 如果你有这个你不需要手动创建异步版本。

如果您这样做,您将收到“重复类”错误。