2014-09-05 59 views
1

我知道其他人在GWT編譯時遇到了問題,但在這種情況下我很茫然。 我正在使用GWT 2.6.1和相同版本的gwt-maven-plugin,2.6.1GWT 2.6.1未知的編譯問題

首先GWT和/或SmartGWT支持JDK 1.8還是現在只有1.7?我使用jdk 1.7,但最終想嘗試1.8。第二,當我在Eclipse中做一個maven構建時,我得到這個錯誤... 然而,當我從GWT Eclipse Plugin執行GWT編譯時,我右鍵單擊該項目,然後將其告知GWT編譯它沒有問題。

[INFO] --- gwt-maven-plugin:2.6.1:compile (default) @ rm-ui --- 
[INFO] auto discovered modules [com.redi2.products.rm.RevenueManager] 
[INFO] Compiling module com.redi2.products.rm.RevenueManager 
[INFO] [ERROR] Unexpected internal compiler error 
[INFO] java.lang.NoSuchFieldError: warningThreshold 
[INFO] at com.google.gwt.dev.javac.JdtCompiler$1.<init>(JdtCompiler.java:505) 
[INFO] at com.google.gwt.dev.javac.JdtCompiler.getStandardCompilerOptions(JdtCompiler.java:503) 
[INFO] at com.google.gwt.dev.javac.JdtCompiler.getCompilerOptions(JdtCompiler.java:533) 
[INFO] at com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:878) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:284) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:511) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:434) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:420) 
[INFO] at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:495) 
[INFO] at com.google.gwt.dev.Precompile.precompile(Precompile.java:241) 
[INFO] at com.google.gwt.dev.Precompile.precompile(Precompile.java:223) 
[INFO] at com.google.gwt.dev.Precompile.precompile(Precompile.java:139) 
[INFO] at com.google.gwt.dev.Compiler.run(Compiler.java:167) 
[INFO] at com.google.gwt.dev.Compiler.run(Compiler.java:132) 
[INFO] at com.google.gwt.dev.Compiler$1.run(Compiler.java:99) 
[INFO] at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55) 
[INFO] at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50) 
[INFO] at com.google.gwt.dev.Compiler.main(Compiler.java:106) 

下一步是走出eclipse,並從命令行嘗試mvn構建,這是行不通的。所以,我做到以下幾點:

mvn clean - and that correctly deletes my target directory and the gwt-unitCache. 
mvn gwt:clean 
mvn -X -e gwt:compile --debug 

起初,有人告訴我說找不到我:com.tholmes.products.App.gwt.xml 但我知道它的存在,我甚至刪除該文件並重新添加它。它是類路徑的一部分,並且以正確的格式存在。

所以,我做了:

mvn gwt:eclipse 
mvn gwt:eclipseTest 

這似乎解決這個問題,它無法找到gwt.xml文件。

所以,現在我再試一次,這是我得到的所有調試和堆棧跟蹤。

[INFO] Compiling module com.redi2.products.rm.RevenueManager 
[INFO] [ERROR] Unexpected internal compiler error 
[INFO] java.lang.NoSuchFieldError: warningThreshold 
[INFO] at com.google.gwt.dev.javac.JdtCompiler$1.<init>(JdtCompiler.java:505) 
[INFO] at com.google.gwt.dev.javac.JdtCompiler.getStandardCompilerOptions(JdtCompiler.java:503) 
[INFO] at com.google.gwt.dev.javac.JdtCompiler.getCompilerOptions(JdtCompiler.java:533) 
[INFO] at com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:878) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:284) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:511) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:434) 
[INFO] at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:420) 
[INFO] at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:495) 
[INFO] at com.google.gwt.dev.Precompile.precompile(Precompile.java:241) 
[INFO] at com.google.gwt.dev.Precompile.precompile(Precompile.java:223) 
[INFO] at com.google.gwt.dev.Precompile.precompile(Precompile.java:139) 
[INFO] at com.google.gwt.dev.Compiler.run(Compiler.java:167) 
[INFO] at com.google.gwt.dev.Compiler.run(Compiler.java:132) 
[INFO] at com.google.gwt.dev.Compiler$1.run(Compiler.java:99) 
[INFO] at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55) 
[INFO] at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50) 
[INFO] at com.google.gwt.dev.Compiler.main(Compiler.java:106) 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 11.522s 
[INFO] Finished at: Fri Sep 05 11:00:36 EDT 2014 
[INFO] Final Memory: 15M/222M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.6.1:compile (default-cli) on project rm-ui: Command [[ 

那麼這裏有一個巨大的類路徑結尾:

...\tholmes\.m2\repository\com\google\gwt\gwt-dev\2.6.1\gwt-dev-2.6.1.jar    
com.google.gwt.dev.Compiler -logLevel INFO -style OBF -war C:\Users\tholmes\git\rm_ui 
\target\rm-ui-0.0.1-SNAPSHOT -localWorkers 4 -XfragmentCount -1 -sourceLevel auto -gen C:\Users\tholmes\git\rm_ui\target\.generated com.redi2.products.rm.RevenueManager 

] 在org.apache.maven.lifecycle.internal.MojoExecutor.execute失敗,狀態1 (MojoExecutor.java :216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org .apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModu (LifecycleStarter.java:183)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:318) 在org.apache.maven.DefaultMaven。執行(DefaultMaven.java:153) 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) 在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 在org.apache.maven.cli.MavenCli.main(MavenCli.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:606) org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus。叢。classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:414) 在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:357)

然後它說:

Caused by: org.codehaus.mojo.gwt.shell.ForkedProcessExecutionException: Command [[ 

帶有巨大的班級路徑,最後以...

... \ tholmes.m2 \ repository \ com \ google \ gwt \ gwt-dev \ 2.6.1 \ gwt-dev-2.6.1。 jar com.google.gwt.dev.Compiler -logLevel INFO -style OBF -war C:\ Users \ tholmes \ git \ rm_ui \ target \ rm-ui-0.0.1-SNAPSHOT -local工人4 -XfragmentCount -1 -sourceLevel自動 -gen C:\用戶\ tholmes \ GIT中\ rm_ui \ target.generated com.redi2.products.rm.RevenueManager ]與狀態1 未能在
org.codehaus .mojo.gwt.shell.AbstractGwtShellMojo $ JavaCommand.execute(AbstractGwtShellMojo.java:485) at org.codehaus.mojo.gwt.shell.CompileMojo.compile(CompileMojo.java:446) at org.codehaus.mojo.gwt .shell.CompileMojo.doExecute(CompileMojo.java:351) at org.codehaus.mojo.gwt.shell.AbstractGwtShellMojo.execute(AbstractGwtShellMojo.java:172) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager .java:106) at org.apache.maven.lifecycle.intern al.MojoExecutor.execute(MojoExecutor.java:208) ...... 19多個

[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/MojoExecutionException 

我花了兩天時間,和去三個試圖弄清楚這一點。
這是我們在本地git中的項目,我寧願不必從頭開始重新創建新的UI項目。

謝謝!

回答

4

首先GWT和/或SmartGWT是否支持JDK 1.8呢,還是現在只有1.7?我使用jdk 1.7,但最終想嘗試1.8。

2.6中的GWT編譯器不支持Java 1.8。 git中的當前版本的GWT也沒有,但是有一個分支正在增加支持。非常短的版本問題:語言功能本身並不算太壞(而且所描述的分支已經有了它們),但是新的JRE庫功能也需要移植(並且合法!不能僅僅從Oracle的代碼,這種方式是訴訟)。

java.lang.NoSuchFieldError: warningThreshold 

兩個可能的問題都可能導致這兩個類路徑相關。

第一個是gwt版本問題 - 你在某種程度上在你的類路徑上混合並匹配了GWT版本。仔細查看完整內容(但不包括在這個問題中,所以我不能給你更具體的內容),你可能會在其他地方找到GWT 2.5或2.4的額外副本。我懷疑這是最有可能的,因爲它傾向於特定於您的GWT升級。

另一個選擇是你的類路徑中有另一個(很可能是較老的)JDT(因爲GWT 2.6更新爲新的JDT版本)。請參閱相關問題GWT + Spring hosted mode not working - 這是關於開發模式,但它是相同的想法。這對我來說似乎不太可能,因爲應該在eclipse或maven中使用相同的類路徑,但仍有可能。

+1

我覺得你已經接近你的評論。整個系統中沒有其他的GWT。它只有2.6.0,然後是2.6.1。 JDT本來就是個問題,我從一個站點找到了一個解決方案,建議我在maven-gwt-plugin配置文件中添加:\t true到我的pom.xml文件中,並解決了這個問題。 – tjholmes66 2014-09-09 17:12:50