3

GWT 2.5 maven 插件在 Linux 中为 i18n 生成引发错误,但在 Windows 中完美运行。我尝试使用 -X 选项运行,但在日志中没有找到任何有用的错误描述。

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>${gwt.version}</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>generateAsync</goal>
                        <goal>i18n</goal>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <webappDirectory>${project.build.directory}/${project.build.finalName}/cms</webappDirectory>
                <hostedWebapp>target/${project.artifactId}</hostedWebapp>
                <i18nMessagesBundles>
                    <i18nMessagesBundle>package.module1.client.Messages</i18nMessagesBundle>
                    <i18nMessagesBundle>package.module2.client.Messages</i18nMessagesBundle>
                    <i18nMessagesBundle>package.module3.client.Messages</i18nMessagesBundle>
                </i18nMessagesBundles>

                <modules>
                    <module>package.module1.Module1</module>
                    <module>package.module2.Module2</module>
                    <module>package.module3.Module3</module>
                </modules>
            </configuration>
        </plugin>

有任何想法吗?

谢谢。

问题堆栈跟踪如下

org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目应用程序上执行目标 org.codehaus.mojo:gwt-maven-plugin:2.5.1:i18n(默认):命令 [[ /bin/sh -c /usr/ lib/jvm/java-7-oracle/jre/bin/java -Xmx512m -classpath [CLASSPATH] com.google.gwt.i18n.tools.I18NSync -out /home/alex/development/camomile-cms/svn/application/ target/generated-sources/gwt -createMessages com.comomile.cms.ria.fs.client.Messages ]] 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 的状态 1 失败org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle。 internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 在 org.apache。maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在 org.apache.maven.lifecycle.internal.LifecycleStarter。在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 上的 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 上执行(LifecycleStarter.java:161) 在 org.apache.maven.cli .MavenCli.execute(MavenCli.java:537) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl。在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 在 org.codehaus 的 java.lang.reflect.Method.invoke(Method.java:606) 调用(DelegatingMethodAccessorImpl.java:43) .plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 在 org.codehaus.plexus.classworlds.launcher.Launcher .main(Launcher.java:352) 引起:org.codehaus.mojo.gwt.shell.ForkedProcessExecutionException: 命令 [[ /bin/sh -c /usr/lib/jvm/java-7-oracle/jre/bin/ java -Xmx512m -classpath [CLASSPATH] com.google.gwt.i18n.tools.I18NSync -out /home/alex/development/comomile/svn/application/target/generated-sources/gwt -createMessages com.comomile.cms.ria .fs.client.Messages ]] 在 org.codehaus.mojo.gwt 失败,状态为 1。shell.AbstractGwtShellMojo$JavaCommand.execute(AbstractGwtShellMojo.java:485) at org.codehaus.mojo.gwt.shell.I18NMojo.doExecute(I18NMojo.java:133) at org.codehaus.mojo.gwt.shell.AbstractGwtShellMojo.execute( AbstractGwtShellMojo.java:172) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 19更多 [ERROR] [ERROR] [ERROR] 有关错误和可能解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1]172) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 还有 19 个 [错误] [ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1]172) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 还有 19 个 [错误] [ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1]http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ERROR] 纠正问题后,您可以使用命令 [ERROR] mvn -rf :application alex@alex-pc 恢复构建: ~/开发/comomile/svn$

4

1 回答 1

0

我在调试后找到了解决方案。

解决方案是使用首字母大写的消息创建属性文件:例如“Messages.properties”而不是“messages.properties”

问题是 Linux 对文件名区分大小写,这就是发出此代码段的原因:

String resourcePath = className.replace('.', '/') + ".properties";
ClassLoader cl = Thread.currentThread().getContextClassLoader();
if (cl == null) {
  cl = ClassLoader.getSystemClassLoader();
}
URL r = cl.getResource(resourcePath);
if (r == null) {
  throw new FileNotFoundException("Could not find the resource '"
      + resourcePath + " matching '" + className
      + "' did you remember to add it to your classpath?");
}

在 com.google.gwt.i18n.tools.I18NSync:326 中。

于 2013-08-19T20:44:19.887 回答