I'm still running into trouble with the major version of the compiled 
classes being 51, so I'm unable to gwt 2.6.0-rc3 to work under jdk 1.6. As 
before, I was able to confirm that the actual .class files are compiled 
correctly, but yet I get fatal errors in attempting to run dev mode. 
Testing so far is on a mac with 1.6.0_65:

$ java -version
java version "*1.6.0_65*"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

$ javap -v com.google.gwt.core.client.impl.Impl | head
Compiled from "Impl.java"
public final class com.google.gwt.core.client.impl.Impl extends 
java.lang.Object
  SourceFile: "Impl.java"
  InnerClass: 
   public abstract #77= #76 of #170; //UncaughtExceptionHandler=class 
com/google/gwt/core/client/GWT$UncaughtExceptionHandler of class 
com/google/gwt/core/client/GWT
  minor version: 0
  major version: *50*
  Constant pool:
const #1 = Method    #61.#163;    //  java/lang/Object."<init>":()V
const #2 = Field    #55.#164;    //  
com/google/gwt/core/client/impl/Impl.unloadSupport:Lcom/google/gwt/core/client/impl/UnloadSupport;

When in dev mode, I've seen this error:
22:44:37.233 [ERROR] [com.example.SampleProject] Unable to load module 
entry point class null (see associated exception for details)
java.lang.UnsupportedClassVersionError: 
com/google/gwt/core/client/impl/Impl : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:471)
    at 
com.google.gwt.dev.shell.CompilingClassLoader.findClass(CompilingClassLoader.java:1121)
    at 
com.google.gwt.dev.shell.CompilingClassLoader.loadClass(CompilingClassLoader.java:1194)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:249)
    at 
com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:670)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:359)
    at 
com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    at 
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
    at 
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
    at java.lang.Thread.run(Thread.java:695)

When running unit tests in dev mode with HtmlUnit, I've seen this:
[ERROR] Unable to load module entry point class null (see associated 
exception for details)
    [junit] java.lang.UnsupportedClassVersionError: 
com/google/gwt/core/client/impl/Impl : Unsupported major.minor version 51.0
    [junit] Dec 5, 2013 10:51:41 PM 
com.gargoylesoftware.htmlunit.WebConsole info
    [junit]     at java.lang.ClassLoader.defineClass1(Native Method)
    [junit] INFO: /launch error: Failed to load module 
"com.example.SampleProject.JUnit".
    [junit]     at 
java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    [junit] Please see the log for details.
    [junit]     at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    [junit]     at java.lang.ClassLoader.defineClass(ClassLoader.java:471)
    [junit]     at 
com.google.gwt.dev.shell.CompilingClassLoader.findClass(CompilingClassLoader.java:1121)
    [junit]     at 
com.google.gwt.dev.shell.CompilingClassLoader.loadClass(CompilingClassLoader.java:1194)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    [junit]     at java.lang.Class.forName0(Native Method)
    [junit]     at java.lang.Class.forName(Class.java:249)
    [junit]     at 
com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:670)
    [junit]     at 
com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:359)
    [junit]     at 
com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    [junit]     at 
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
    [junit]     at 
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
    [junit]     at java.lang.Thread.run(Thread.java:695)

It has been driving me nuts trying to track down what mistake I could 
possibly be making - I've tried explicitly adding -sourceLevel 1.6 to the 
arguments (which parses correctly, I set breakpoints to avoid the possible 
null issue reported for java 8), but this hasn't seemed to have any effect. 
I'm willing to admit user error, but the really odd thing about this is 
that if I debug 
com.google.gwt.dev.shell.rewrite.WriteJsoImpl.ForJsoDollar's ctor or 
com.google.gwt.dev.asm.ClassWriter.toByteArray() I can pick out that some 
objects have version 49, some have 50, and at least one has 51 (which under 
java 6 is fatal).  Here's the stack at this point, paused on a case where 
version is 51:

ClassWriter.visit(int, int, String, String, String, String[]) line: 657    
UseMirroredClasses(ClassVisitor).visit(int, int, String, String, String, 
String[]) line: 112    
RewriteSingleJsoImplDispatches(ClassVisitor).visit(int, int, String, 
String, String, String[]) line: 112    
RewriteSingleJsoImplDispatches.visit(int, int, String, String, String, 
String[]) line: 144    
RewriteRefsToJsoClasses(ClassVisitor).visit(int, int, String, String, 
String, String[]) line: 112    
RewriteJsniMethods(ClassVisitor).visit(int, int, String, String, String, 
String[]) line: 112    
RewriteJsniMethods.visit(int, int, String, String, String, String[]) line: 
339    
ClassReader.accept(ClassVisitor, Attribute[], int) line: 614    
ClassReader.accept(ClassVisitor, int) line: 506    
HostedModeClassRewriter.rewrite(TypeOracle, String, byte[], 
Map<String,String>) line: 251    
CompilingClassLoader.findClassBytes(String) line: 1313    
CompilingClassLoader.findClass(String) line: 1086    
CompilingClassLoader.loadClass(String, boolean) line: 1194    
CompilingClassLoader(ClassLoader).loadClass(String) line: 247    
Class<T>.forName0(String, boolean, ClassLoader) line: not available [native 
method]    

Sure enough, if I back up a few frames to ClassReader.accept:614 and 
inspect this.b, I see that indeed, something has read out 51 as the version 
(8th entry in the byte array):
[-54, -2, -70, -66, 0, 0, 0, 51, ...

A few more steps up to CompilingClassLoader.findClassBytes:1313 shows that 
this byte array (or an earlier version? I'm not quite clear) comes from 
line 1278:
classBytes = compiledClass.getBytes();

This compiledClass object is an instance of 
com.google.gwt.dev.javac.CompiledClass, and is where I start to suspect 
that my workspace is either *really* messed up, or that there is a bug that 
only hit some users. 

Inspecting this object shows not a lot directly, but the CompiledClass.unit 
field has details that make it look like it is from the .gwtar file, a 
serialized set of Java objects from the precompile process. Inspecting 
compiledClass.unit.resourceLocation shows it is a string with this value:

file:/usr/local/google/home/mdempsky/wd/gwt/user/src/com/google/gwt/core/client/impl/Impl.java

I'm not seeing anything specific in the debugger that points to what is 
going on - I do see that there is some specific code in 
com.google.gwt.dev.util.DiskCache.readByteArray(long) that should be 
reading out the class byte[], but I haven't taken that further apart to see 
*why* it is reading 51 instead of the expected 50.

Modifying the gwt-user jar to not contain any gwtar files, and clearing out 
the local gwt-unitCache/ dir seems to resolve this, but I only attempted 
this after beginning this message, so I haven't fully vetted this. Both dev 
mode and unit tests appear to work correctly however. This does further 
point to a bug in GWT, at least from my perspective.

Can someone else verify that GWT 2.6.0-rc3 behaves correctly with Java 6?

I'm using the download from 
https://code.google.com/p/google-web-toolkit/downloads/detail?name=gwt-2.6.0-rc3.zip&can=2&q=
 
for this testing.


On Thursday, December 5, 2013 9:16:29 AM UTC-6, Thomas Broyer wrote:
>
>
>
> On Thursday, December 5, 2013 12:42:29 AM UTC+1, Matthew Dempsky wrote:
>>
>> FYI, I've just pushed out 2.6.0-rc3, which also includes a workaround for 
>> the Eclipse plugin version warning.  (We decided not to wait for the GPE 
>> release, and to also be compatible with older GPE versions.)
>>
>> I'm cautiously optimistic that this should be our last release candidate 
>> before 2.6.0 final.  Please test and let me know if you run into any issues.
>>
>
> I haven't investigated yet (really don't have time ATM, and I'm not sure I 
> could find some before the final release) but it seems like when you pass 
> "-sourceLevel 1.8" to the Compiler it doesn't fail with the "usage" help 
> printed to the console, but instead happily sets the source level to 'null' 
> (as it cannot find a matching enum value) and then fails later with an NPE.
> See 
> https://groups.google.com/d/msg/google-web-toolkit/p9ADHIfX2A8/-MfMuhoia9UJ
>
> That was with RC1 and RC2 though, maybe it has changed in RC3 (BTW, does 
> RC3 has "auto" already?).
>
> The problem though is that looking at the code for ArgHandlerSource (now 
> ArgHandlerSourceLevel), I couldn't see anything wrong; which would mean the 
> issue is in the global handling of CLI arguments :-/
>
>

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors
--- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit-contributors+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to