Subject: Re: Android port: unable to build using javac 20.0.1 on Arch Linux

From: Po Lu <[email-masked]>
Date: Thu, 04 May 2023 20:04:43 +0800

Simon Pugnet <[email-masked]> writes:

> I have been building the Android port from source regularly and after
> a recent Arch Linux package update I am no longer able to configure
> the build.
>
> The JDK package I currently have installed is: extra/jdk-openjdk
> 20.0.1.u9-3
>
> When running configure I get: -
>
>  [...]
>  checking whether the Java compiler works... no
>  configure: error: The Java compiler does not work, or you did not
>  specify
>  a valid path to android.jar.  See config.log for more details.
>  make: *** [Makefile:586: config.status] Error 1
>
> Checking config.log shows: -
>
>  [...]
>  configure:7603: checking whether the Java compiler works
>  warning: [options] bootstrap class path not set in conjunction with
>  -source 7
>  error: Source option 7 is no longer supported. Use 8 or later.
>  error: Target option 7 is no longer supported. Use 8 or later.
>  configure:7634: result: no
>  configure:7638: error: The Java compiler does not work, or you did
>  not specify
>  a valid path to android.jar.  See config.log for more details.
>  [...]
>
> When I run javac I see the following: -
>
>  [...]
>  --source <release>, -source <release>
>        Provide source compatibility with the specified Java SE
>        release. Supported releases: 8, 9, 10, 11, 12, 13, 14, 15, 16,
>        17, 18, 19, 20
>  [...]
>  --target <release>, -target <release>
>        Generate class files suitable for the specified Java SE
>        release. Supported releases: 8, 9, 10, 11, 12, 13, 14, 15, 16,
>        17, 18, 19, 20
>  [...]
>
> I can see a few lines in configure.ac which are like this: -
>
>  ("$JAVAC" -classpath "$with_android" -target 1.7 -source 1.7
>  conftest.java \
>
> So I'm assuming the error comes from this version of javac not
> supporting -target/-source 1.7.
>
> I hope that provides enough information, please let me know if you'd
> like me to test anything else.
>
> Kind regards,

Unfortunately, you do need support for such an option, as otherwise the
generated code will not run on API levels below 26.  I'd recommend the
OpenJDK 11.x release, which will be supported for a significant amount
of time.

I will fix configure to specifically detect this situation and print a
clearer error message.