OpenJDK 10 zero For Mips32el java -version IncompatilveClassChangeError
Mikael Vidstedt
mikael.vidstedt at oracle.com
Fri Jun 5 22:15:10 UTC 2020
> On Jun 5, 2020, at 1:16 PM, Mikael Vidstedt <mikael.vidstedt at oracle.com <mailto:mikael.vidstedt at oracle.com>> wrote:
>
>
>
>> On Jun 5, 2020, at 10:27 AM, William Larson <wlarsong at gmail.com <mailto:wlarsong at gmail.com>> wrote:
>>
>> Hello Magnus
>>
>> I got the source code from the openjdk mercurial repository following the
>> building.html exactly.
>
> Can you give some more details here please - exactly how do you get the sources?
Ah! I’m going to guess that you grabbed the sources from here:
http://hg.openjdk.java.net/jdk10/jdk10 <http://hg.openjdk.java.net/jdk10/jdk10>
That’s the “old” forest for jdk10, used before the repo consolidation work in JEP 296 https://openjdk.java.net/jeps/296 <https://openjdk.java.net/jeps/296>. The jdk10 work moved into this repo after that:
http://hg.openjdk.java.net/jdk/jdk10 <http://hg.openjdk.java.net/jdk/jdk10>
Which is where you’ll find the “GA” for JDK 10. Please use that repo instead.
Out of curiosity btw - why JDK 10?
Cheers,
Mikael
>
>> Here is the version numbers
>> DEFAULT_VERSION_MAJOR=10
>> DEFAULT_VERSION_MINOR=0
>> DEFAULT_VERSION_SECURITY=0
>> DEFAULT_VERSION_PATCH=0
>>
>> LAUNCHER_NAME=openjdk
>> PRODUCT_NAME=OpenJDK
>> PRODUCT_SUFFIX="Runtime Environment"
>> JDK_RC_PLATFORM_NAME=Platform
>> COMPANY_NAME=N/A
>> HOTSPOT_VM_DISTRO="OpenJDK"
>>
>> # Might need better names for these
>> MACOSX_BUNDLE_NAME_BASE="OpenJDK"
>> MACOSX_BUNDLE_ID_BASE="net.java.openjdk"
>>
>> The JDK10 is modified with this patch for mips
>> https://groups.google.com/forum/#!topic/linux.debian.bugs.dist/Tmgse0HIzDc <https://groups.google.com/forum/#!topic/linux.debian.bugs.dist/Tmgse0HIzDc>
>>
>> After the above modification (note I have tried unmodified and modified
>> JDK10 for the x64 build with no difference in outcome)
>> - First I run in JDK 10
>> When I run this configure in jdk 10 (builds JDK for Linux x64)
>> bash configure --with-conf-name=buildjdk && make jdk CONF=buildjdk
>>
>> It Compiles Successfully
>>
>> Then I run in JDK 10
>>
>> bash configure --openjdk-target=mipsel-oe-linux
>> --with-sysroot=/usr/local/oecore-i686/sysroots/mips32el-nf-oe-linux
>> --with-toolchain-path=/usr/local/oecore-i686/sysroots/i686-oesdk-linux/usr/bin/mipsel-oe-linux
>> --with-libffi=/usr/local/oecore-i686/sysroots/mips32el-nf-oe-linux/usr/src/debug/libffi/3.0.13-r0/libffi-3.0.13
>> --with-jvm-variants=zero
>> --with-build-jdk=/opt/FaceClockJava/jdk10/build/buildjdk/jdk
>> --with-stdc++lib=dynamic
>>
>> checking for Boot JDK... /usr/lib/jvm/java-8-oracle
>> checking Boot JDK version... java version "1.8.0_171" Java(TM) SE Runtime
>> Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build
>> 25.171-b11, mixed mode)
>> checking for java in Boot JDK... ok
>> checking for javac in Boot JDK... ok
>> checking for javah in Boot JDK... ok
>> checking for jar in Boot JDK... ok
>> checking for jarsigner in Boot JDK... ok
>> checking if Boot JDK supports modules... no
>> checking if Boot JDK is 32 or 64 bits... 64
>> configure: Found potential Build JDK using configure arguments
>> configure: Potential Build JDK found at
>> /opt/FaceClockJava/jdk10/build/buildjdk/jdk is incorrect JDK version
>> (openjdk version "10-internal"); ignoring
>> configure: (Your Build JDK must be version 9)
>
> This part doesn’t make sense. Here’s the error message line in jdk10:
>
> http://hg.openjdk.java.net/jdk/jdk10/file/b09e56145e11/make/autoconf/boot-jdk.m4#l491 <http://hg.openjdk.java.net/jdk/jdk10/file/b09e56145e11/make/autoconf/boot-jdk.m4#l491><http://hg.openjdk.java.net/jdk/jdk10/file/b09e56145e11/make/autoconf/boot-jdk.m4#l491 <http://hg.openjdk.java.net/jdk/jdk10/file/b09e56145e11/make/autoconf/boot-jdk.m4#l491>>
>
> As you can see the “hard coded” error message is "Your Build JDK must be version 10”. Can you check what that file and line looks like in your sources?
>
> It would be very helpful to know exactly where you got the sources from and/or why your error message does not match the expected one.
>
> Cheers,
> Mikael
>
>> checking for Build JDK... no
>> configure: error: Could not find a suitable Build JDK
>>
>> I get this result.
>>
>> I then downloaded JDK 9and did not modify it and ran
>> bash configure --with-conf-name=buildjdk && make jdk CONF=buildjdk
>>
>> Then back in JDK10 I ran (Note the jdk9 in the --with-build-jdk)
>> bash configure --openjdk-target=mipsel-oe-linux
>> --with-sysroot=/usr/local/oecore-i686/sysroots/mips32el-nf-oe-linux
>> --with-toolchain-path=/usr/local/oecore-i686/sysroots/i686-oesdk-linux/usr/bin/mipsel-oe-linux
>> --with-libffi=/usr/local/oecore-i686/sysroots/mips32el-nf-oe-linux/usr/src/debug/libffi/3.0.13-r0/libffi-3.0.13
>> --with-jvm-variants=zero
>> --with-build-jdk=/opt/FaceClockJava/jdk9/build/buildjdk/jdk
>> --with-stdc++lib=dynamic
>>
>> and it works and compiles with
>> CONF=linux-mipsel-normal-zero-release make
>>
>> However
>> CONF=linux-mipsel-normal-zero-release make images also works but when i
>> copy the jdk/jre from the images folder into my qemu based on the same
>> sysroots and the compiler it gives me
>>
>> ./java -version
>> Error occurred during initialization of boot layer
>> java.lang.IncompatibleClassChangeError: Implementing class
>>
>> If I copy the entire jdk (the jdk folder next to images folder not the one
>> inside)
>> It works and I can even compile a HelloWorld.java on mipsel target
>>
>> ./java -version
>> openjdk version "10-internal"
>> OpenJDK Runtime Environment (build 10-internal+0-adhoc.will.jdk10)
>> OpenJDK Zero VM (build 10-internal+0-adhoc.will.jdk10, interpreted mode)
>>
>> Will
>>
>>
>> On Fri, Jun 5, 2020 at 3:42 AM Magnus Ihse Bursie <
>> magnus.ihse.bursie at oracle.com <mailto:magnus.ihse.bursie at oracle.com>> wrote:
>>
>>> On 2020-06-05 08:06, William Larson wrote:
>>>> Hello David,
>>>>
>>>> When running configure
>>>> --with-buildjdk=./jdk/build/linux-x86_64-normal-server-release/jdk
>>>>
>>>> I get the following error
>>>>
>>>> configure: Potential Build JDK found at
>>>> /opt/FaceClockJava/jdk10l/build/linux-x86_64-normal-server-release/jdk is
>>>> incorrect JDK version (openjdk version "10-internal"); ignoring
>>>> configure: (Your Build JDK must be version 9)
>>>> checking for Build JDK... no
>>>> configure: error: Could not find a suitable Build JDK
>>>> configure exiting with result code 1
>>>>
>>>> How do I build with buildjdk10 when it's asking for 9?
>>> You are apparently trying to build JDK 9, not JDK 10. What does
>>> "make/autoconf/version-numbers" say for DEFAULT_VERSION_FEATURE? How did
>>> you clone the source code for JDK 10? Have you modified any files?
>>>
>>> /Magnus
>>>
>>>
>>>>
>>>>
>>>> On Thu, Jun 4, 2020, 9:16 PM David Holmes <david.holmes at oracle.com <mailto:david.holmes at oracle.com>>
>>> wrote:
>>>>
>>>>> William,
>>>>>
>>>>> You need a JDK 10 build JDK not JDK 9 - as Mikael already stated and as
>>>>> Magnus wrote:
>>>>>
>>>>> "When we cross-compile, we need not only a Boot JDK (of version current
>>>>> N-1) running on the build host platform, but we also need a Build JDK,
>>>>> based on the current source code, running on the build host. (This is
>>>>> for running jmod/jlink; it needs to be up to date)."
>>>>>
>>>>> With your JDK 9 build JDK you are getting invalid jmod/jlink output
>>>>> files that prevent the full image from executing. But the exploded image
>>>>> that doesn't use all of those and so may execute okay.
>>>>>
>>>>> David
>>>>>
>>>>> On 5/06/2020 12:22 pm, William Larson wrote:
>>>>>> Hello David,
>>>>>>
>>>>>> I copied everything under
>>>>>>
>>>>>> build/linux-mipsel-normal-zero-release/images/jdk
>>>>>>
>>>>>> Got error
>>>>>>
>>>>>> I then tried just
>>>>>>
>>>>>>
>>>>>> build/linux-mipsel-normal-zero-release/images/jre
>>>>>>
>>>>>> Got the error
>>>>>> I even copied
>>>>>>
>>>>>> build/linux-mipsel-normal-zero-release/images/jmods
>>>>>>
>>>>>> Along side jre and jdk
>>>>>>
>>>>>> Still got the error
>>>>>>
>>>>>> I copied: (note the image folder is missing)
>>>>>> This is a much much bigger folder
>>>>>>
>>>>>> build/linux-mipsel-normal-zero-release/jdk
>>>>>>
>>>>>> To the target and it works albeit very slowly.
>>>>>>
>>>>>> I just want the jre ideally.
>>>>>>
>>>>>> Thanks for the help,
>>>>>>
>>>>>> Will
>>>>>>
>>>>>> On Thu, Jun 4, 2020, 7:12 PM David Holmes <david.holmes at oracle.com <mailto:david.holmes at oracle.com>
>>>>>> <mailto:david.holmes at oracle.com <mailto:david.holmes at oracle.com>>> wrote:
>>>>>>
>>>>>> Hi William,
>>>>>>
>>>>>> On 5/06/2020 10:00 am, William Larson wrote:
>>>>>>> Hello,
>>>>>>> I was able to successfully compile/build OpenJDK 10 with
>>>>>> following configure
>>>>>>>
>>>>>>> bash configure
>>>>>>> --openjdk-target=mipsel-oe-linux
>>>>>>>
>>>>> --with-sysroot=/usr/local/oecore-i686/sysroots/mips32el-nf-oe-linux
>>>>>>>
>>>>>>
>>>>>
>>> --with-toolchain-path=/usr/local/oecore-i686/sysroots/i686-oesdk-linux/usr/bin/mipsel-oe-linux
>>>>>>>
>>>>>>
>>>>>
>>> --with-libffi=/usr/local/oecore-i686/sysroots/mips32el-nf-oe-linux/usr/src/debug/libffi/3.0.13-r0/libffi-3.0.13
>>>>>>>
>>>>>>> --with-jvm-variants=zero
>>>>>>> --with-build-jdk=./jdk9/build/buildjdk/jdk
>>>>>>> --with-boot-jdk=./jdk9/build/buildjdk/jdk
>>>>>>>
>>>>>>> I applied this patch to OpenJDK 10 as mips has 128 signals not
>>> 64
>>>>>>>
>>>>>>
>>>>>
>>> https://groups.google.com/forum/#!topic/linux.debian.bugs.dist/Tmgse0HIzDc <https://groups.google.com/forum/#!topic/linux.debian.bugs.dist/Tmgse0HIzDc>
>>>>>>>
>>>>>>> I also Reference this mail from Magnus
>>>>>>>
>>>>>>
>>>>>
>>> https://mail.openjdk.java.net/pipermail/build-dev/2019-January/024735.html
>>>>>>>
>>>>>>> Where he suggests using a boot JDK
>>>>>>>
>>>>>>> CONF=linux-mipsel-normal-zero-release make images
>>>>>>>
>>>>>>> Works
>>>>>>>
>>>>>>> However if i copy the images to my QEMU based on the same
>>> sysroot
>>>>> and
>>>>>>> compiler above I get
>>>>>>>
>>>>>>> ./java -version
>>>>>>> Error occurred during initialization of boot layer
>>>>>>> java.lang.IncompatibleClassChangeError: Implementing class
>>>>>>>
>>>>>>> If I copy the JDK folder just outside of images folder
>>>>>>> (build/linux-mipsel-normal-zero-release/jdk) it works OK albeit
>>>>>> it takes a
>>>>>>> LONG time to print
>>>>>>
>>>>>> That is not part of the image built by "make images", it is what
>>> is
>>>>>> called the exploded image. So I'm not clear exactly what you
>>> copied
>>>>>> which did not work? Was it everything under
>>>>>>
>>>>>> build/linux-mipsel-normal-zero-release/images/jdk
>>>>>>
>>>>>> ?
>>>>>>
>>>>>> Cheers,
>>>>>> David
>>>>>>
>>>>>>> ./java -version
>>>>>>> openjdk version "10-internal"
>>>>>>> OpenJDK Runtime Environment (build
>>> 10-internal+0-adhoc.will.jdk10)
>>>>>>> OpenJDK Zero VM (build 10-internal+0-adhoc.will.jdk10,
>>>>>> interpreted mode)
>>>>>>>
>>>>>>> Why is does
>>>>>>> CONF=linux-mipsel-normal-zero-release make images
>>>>>>> not work?
>>>>>>>
>>>>>>
>>>
>>>
>>
>> --
>> -William Larson
More information about the build-dev
mailing list