How to disable warnings treated as errors during the JDK build?

erik.joelsson at oracle.com erik.joelsson at oracle.com
Fri Mar 15 15:55:31 UTC 2024


The configure flag --disable-warnings-as-errors only applies to native 
compilation, where the C/C++ compiler is used. For Java compilation, 
most of the source code is built using the interim javac, which is 
itself built from the JDK src, so we have full control over what 
warnings should or shouldn't be enabled. The rest of the Java source 
code is compiled using the javac in the bootjdk, which is also well 
defined.

Your build is failing when compiling the interim javac using the 
bootjdk. That could only happen if you use a bootjdk that isn't 
appropriate for the version of the JDK src. We generally allow bootjdk 
of version N-1 or N for building JDK N. However, using a newer build of 
JDK N than the source in question does run the risk of having new 
warnings that haven't been fixed in the older source. So using bootjdk 
version N isn't recommended unless you know what you are doing.

The recommendation is to always use JDK N-1 for bootjdk. That's the 
officially supported version.

/Erik

On 3/15/24 08:27, S A wrote:
> Hi all,
>
> how do I disable warnings treated as errors during the OpenJDK 19+ build?
>
> In order to better understand changes in behavior between OpenJDK 
> versions, I've been bisecting and compiling OpenJDK 19 and OpenJDK 20 
> in the recent months.
>
> One problem that I run into a lot is warnings failing the build. How 
> do I disable this behavior? Due to different work environments, I 
> compile with a few versions of gcc, so the warnings differ based on 
> the gcc version. So far I've been changing the gcc version in order to 
> be able to compile, but this is tiresome.
>
> According to the guide, the behavior can be configured away:
>
> https://openjdk.org/groups/build/doc/building.html
>
> > By default, the JDK has a strict approach where warnings from the 
> compiler is considered errors which fail the build. For very new or 
> very old compiler versions, this can trigger new classes of warnings, 
> which thus fails the build. Run configure with 
> --disable-warnings-as-errors to turn of this behavior. (The warnings 
> will still show, but not make the build fail.)
>
> Unfortunately, e.g. with OpenJDK 20, the build still fails due to 
> warnings. Has the configuration option changed?
>
> E.g. using gcc:
>
> gcc version 10.2.1
>
> Building at commit:
>
> commit 388a56e4c4278f2a3da31946b15a45f3aee25e58 (HEAD, tag: jdk-20+20)
>
> I run into warnings that cause the build to fail:
>
> ERROR: Build failed for target 'images' in configuration 
> 'linux-x86_64-server-release' (exit code 2)
>
> === Output from failing command(s) repeated here ===
> * For target 
> buildtools_interim_langtools_modules_jdk.compiler.interim__the.BUILD_jdk.compiler.interim_batch:
> /data/git/jdk/src/jdk.compiler/share/classes/com/sun/tools/javac/file/FSInfo.java:140: 
> warning: [deprecation] URL(URL,String) in URL has been deprecated
>         URL retVal = new URL(base, input);
>                      ^
> error: warnings found and -Werror specified
> /data/git/jdk/src/jdk.compiler/share/classes/com/sun/tools/javac/launcher/Main.java:693: 
> warning: [deprecation] URL(String,String,int,String,URLStreamHandler) 
> in URL has been deprecated
>                 return new URL(PROTOCOL, null, -1, name, handler);
>                        ^
> /data/git/jdk/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/ServiceProxy.java:141: 
> warning: [deprecation] URL(URL,String) in URL has been deprecated
>                 URL u = new URL(url, fullName);
>                         ^
> 1 error
> 3 warnings
>
> Despite configuration:
>
> using configure arguments '--disable-warnings-as-errors 
> --with-boot-jdk=/data/jdk/openjdk-20.0.2_linux-x64_bin/jdk-20.0.2/ 
> --with-toolchain-type=gcc'
>
> Best regards and thanks,
> Simeon


More information about the build-dev mailing list