Problems with non Oracle boot JDKs and class file version 52
David Holmes
david.holmes at oracle.com
Fri Dec 7 23:39:55 PST 2012
Jon,
On 8/12/2012 4:24 AM, Jonathan Gibbons wrote:
> On 12/07/2012 09:37 AM, Mandy Chung wrote:
>> On 12/7/12 4:42 AM, Erik Joelsson wrote:
>>> On 2012-12-07 13:06, David Holmes wrote:
>>>>
>>>> Here's the failing command (edited for presentation):
>>>>
>>>> /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Xms64M -Xmx1100M
>>>> -XX:PermSize=32m -XX:MaxPermSize=160m -XX:ThreadStackSize=1536 \
>>>>
>>>> -Xbootclasspath/a:/java/embedded/users/dh198349/build-infra/builds/b00/se-linux-i586-ea/jdk/classes
>>>>
>>>>
>>
>> ^^^^ - this seems the cause of the problem?
>>
>> To run the bootstrap javac (v51), it can't set -Xbootclasspath to
>> jdk8/classes (v52).
>
>
>
> Yes, why is this line here at all? Try deleting it.
It is a good point that this line does not make sense. But without this
bootclasspath entry the closed class won't be found at all - so we'd
just fail with a NoClassDefFoundError wouldn't we?
Erik: this does seem to be a bug in the build rule.
Thanks,
David
> -- Jon
>
>
>>
>> Mandy
>>
>>>>
>>>> "-Xbootclasspath/p:/java/embedded/users/dh198349/build-infra/builds/b00/se-linux-i586-ea/langtools/dist/bootstrap/lib/javac.jar"
>>>>
>>>> -jar
>>>> /java/embedded/users/dh198349/build-infra/builds/b00/se-linux-i586-ea/langtools/dist/bootstrap/lib/javac.jar
>>>>
>>>> \
>>>> -XDprocess.packages -proc:only \
>>>> -processor com.sun.tools.javac.sym.CreateSymbols \
>>>>
>>>> -Acom.sun.tools.javac.sym.Jar=/java/embedded/users/dh198349/build-infra/builds/b00/se-linux-i586-ea/images/lib/rt.jar
>>>>
>>>> \
>>>>
>>>> -Acom.sun.tools.javac.sym.Dest=/java/embedded/users/dh198349/build-infra/builds/b00/se-linux-i586-ea/images/symbols/META-INF/sym/rt.jar
>>>>
>>>> \
>>>> java.applet java.awt java.awt.color java.awt.datatransfer
>>>> java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im
>>>> java.awt.im.spi java.awt.image java.awt.image.renderable
>>>> java.awt.print java.beans java.beans.beancontext java.io java.lang
>>>> ...
>>>> com.sun.servicetag com.oracle.net com.oracle.nio
>>>> Error occurred during initialization of VM
>>>> java/lang/UnsupportedClassVersionError: sun/misc/PostVMInitHook :
>>>> Unsupported major.minor version 52.0
>>>>
>>>> ----
>>>>
>>>> Now PostVMInitHook is a class from the closed/Oracle repo. So here is
>>>> what I think is happening - this closed class gets referenced but
>>>> because we are on an OpenJDK build it is not found in rt.jar, but is
>>>> found in our freshly built jdk/classes - hence the jdk7 VM tries to
>>>> load a JDK 8 class and fails.
>>>>
>>>> So it would seem that an OpenJDK VM can not be used to bootstrap the
>>>> Oracle JDK.
>>>>
>>>> Not sure there is anything we can do about that except "don't do that".
>>>>
>>>> David
>>>> -----
>>>>
>>> That's what I was suspecting, that open boot cannot bootstrap Oracle
>>> JDK. Interesting that we get that far before it falls apart. This
>>> looks like it's the generation of symbol files for ct.sym. I tried to
>>> reproduce this by building an openjdk only image myself and then
>>> using it as boot for a closed build, but that didn't fail.
>>>
>>> Configure should try to detect if the bootjdk is unlikely to work at
>>> least.
>>>
>>> /Erik
>>>>>
>>>>> /Erik
>>>>>
>>>>> On 2012-12-07 00:35, David Holmes wrote:
>>>>>> I've now seen two people encounter problems trying to build Profiles
>>>>>> using the new build system, when their boot JDK is the locally
>>>>>> installed IcedTea openjdk distribution (7 in one case and 6 in
>>>>>> another).
>>>>>>
>>>>>> The error occurs creating jar files eg
>>>>>>
>>>>>> Creating resources.jar
>>>>>> Error occurred during initialization of VM
>>>>>> java/lang/UnsupportedClassVersionError: sun/misc/PostVMInitHook :
>>>>>> Unsupported major.minor version 52.0
>>>>>>
>>>>>> Are we using bootclasspath tricks that only work on Oracle JDK?
>>>>>>
>>>>>> David
>>>>>>
>>>
>>
>
More information about the build-infra-dev
mailing list