[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 1.5.0.0-29.1.el6         os
>>  137 k
>> java-1.6.0-sun                 x86_64 1:1.6.0.45-1jpp.1.el6    os
>>   25 M
>> java-1.7.0-ibm                 x86_64 1:1.7.0.5.0-1jpp.2.el6_4 os
>>   73 M
>> java-1.7.0-ibm-devel           x86_64 1:1.7.0.5.0-1jpp.2.el6_4 os
>>  7.5 M
>> java-1.7.0-oracle              x86_64 1:1.7.0.45-1jpp.2.el6_4  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
java-1.7.0-openjdk.
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
org.apache.tools.ant.launch.Launcher
the reason probably the same as in:
https://bugzilla.redhat.com/show_bug.cgi?id=983394
https://bugzilla.redhat.com/show_bug.cgi?id=982683
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:
https://bugzilla.redhat.com/show_bug.cgi?id=1208832

-- 
  Levente                               "Si vis pacem para bellum!"


More information about the java-devel mailing list