[fedora-java] how to build with java -8 in epel-6?

Farkas Levente lfarkas at lfarkas.org
Fri Apr 3 11:01:42 UTC 2015

On 03/27/2015 03:38 PM, Deepak Bhole wrote:
> * Farkas Levente <lfarkas at lfarkas.org> [2015-03-27 10:05]:
>> hi,
>> i'm try to build a java package for epel-6 which use java-8.
>> unfortunately it seem it's not enough to simple add
>> BuildRequires:  java-1.8.0-openjdk-devel
>> since it's install it, but also still install during the mock setup
>> session old java packages ie:
>> java-1.5.0-gcj                 x86_64         os
>>  137 k
>> java-1.6.0-sun                 x86_64 1:    os
>>   25 M
>> java-1.7.0-ibm                 x86_64 1: os
>>   73 M
>> java-1.7.0-ibm-devel           x86_64 1: os
>>  7.5 M
>> java-1.7.0-oracle              x86_64 1:  os
>>   28 M
>> and i'm not bale to exclude them. in rpm the is a Obsoletes: but there
>> is no such thing as "BuildRequiresObsoletes":-(
>> what's more i can't run system-switch-java since it's required root
>> access and there is no command line option to switch to a given specific
>> java version.
>> so during build the system use the default javac which is not java8 but
>> ibm's java7 (IBM J9 VM (build 2.6, JRE 1.7.0).
>> is there any way to force java8? or is there any way to exclude other
>> java vm jre to install into mock during build?
> Hi,
> One of your dependencies likely requires java or java-devel, or perhaps
> even a versioned 6/7, which is why this seems to be happening. 
> That said though, how are sun/oracle/ibm jdks showing up? They are not
> in base rhel and AFAIK EPEL does not pull from Supplementary, does it?
> You can force your build to use a different JVM in a couple of ways:
> 1. If you are calling javac directly, use
> /usr/lib/jvm/java-1.8.0-openjdk/bin/javac
> 2. If there is additional complexity in the build e.g. ant/maven are
>    being used, try setting JAVA_HOME and overriding PATH to put OpenJDK8
>    first i.e. do:
>    $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
>    $ export PATH=$JAVA_HOME/bin:${PATH}
> This should force the usage of OpenJDK8.

the real problem here is that java-1.8.0-openjdk do NOT provides java!
so all other packages which requires java try to install older version,
but since it's install java-1.8.0-openjdk it can't install
and this itself cause a lot's of other problems:

- first of all older jdk will be installed (sun, ibm, oracle) and if it
can't find any other version then the build failed.

- the system default java never will be java-1.8.0-openjdk so all tools
will be use a different java.

- even if i set in the spec file:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:${PATH}
ant clean
Error: Could not find or load main class
the reason probably the same as in:
but jpackage-utils not updated on epel-6 and epel-7 (javapackages-tools)

so currently it's not possible.
anyway i fill a bug about it:

  Levente                               "Si vis pacem para bellum!"

More information about the buildsys mailing list