On Thu, Apr 7, 2016 at 5:23 PM, Juan Hernández <jhernand@redhat.com> wrote:
On 04/07/2016 10:50 AM, Kai Kang wrote:
>
>
> On Thu, Apr 7, 2016 at 3:55 PM, Juan Hernández <jhernand@redhat.com
> <mailto:jhernand@redhat.com>> wrote:
>
>     On 04/07/2016 08:34 AM, Martin Mucha wrote:
>     >
>     >
>     > ----- Original Message -----
>     >>
>     >>
>     >> On Wed, Apr 6, 2016 at 6:03 PM, Juan Hernández <
>     jhernand@redhat.com <mailto:jhernand@redhat.com> > wrote:
>     >>
>     >>
>     >>
>     >> On 04/06/2016 11:51 AM, Kai Kang wrote:
>     >>> Hi,
>     >>>
>     >>> I am building ovirt-engine 3.6.4.1 and failed with
>     NullPointerException.
>     >>> I build for cross compile with commands:
>     >>>
>     >>>
>     >>>
>     >>>
>     tmp_repo=/buildarea3/kkang/builds/Mar31-ovrit-engine/bitbake_build/tmp/work/corei7-64-wrs-linux/ovirt-engine/3.6.4.1-r0/repo
>     >>> export MAVEN_OPTS="-Dmaven.repo.local=$tmp_repo"
>     >>>
>     >>> make EXTRA_BUILD_FLAGS="-s
>     >>>
>     /buildarea3/kkang/builds/Mar31-ovrit-engine/bitbake_build/tmp/work/corei7-64-wrs-linux/ovirt-engine/3.6.4.1-r0/settings.xml
>     >>> --debug --offline" -j1 BUILD_GWT=1 BUILD_LOCALES=0
>     >>> BUILD_UT=1 BUILD_VALIDATION=0
>     >>> JAVA_DIR=/usr/share/ovirt-engine/java LOCALSTATE_DIR=/var
>     >>> MAVENPOM_DIR=/usr/share/ovirt-engine/maven-poms PREFIX=/usr
>     >>> SYSCONF_DIR=/etc PKG_SYSCONF_DIR=/etc/ovirt-engine
>     >>> PKG_DOC_DIR=/usr/doc/ovirt-engine
>     >>> PKG_EAR_DIR=/usr/share/ovirt-engine/engine.ear
>     >>> PKG_PKI_DIR=/etc/pki/ovirt-engine
>     >>> PKG_JBOSS_MODULES=/usr/share/ovirt-engine/modules
>     >>> PKG_CACHE_DIR=/var/cache/ovirt-engine
>     >>> PKG_LOG_DIR=/var/log/ovirt-engine
>     >>> PKG_TMP_DIR=/var/tmp/ovirt-engine
>     >>> PKG_STATE_DIR=/var/lib/ovirt-engine PKG_USER=ovirt PKG_GROUP=ovirt
>     >>> all
>     >>>
>     >>>
>     >>> The error messages show:
>     >>>
>     >>> [INFO] oVirt Engine API Definition .......................
>     FAILURE [1.476s]
>     >>> ...
>     >>> [INFO]
>     >>>
>     ------------------------------------------------------------------------
>     >>> [ERROR] Failed to execute goal
>     >>> org.codehaus.mojo:exec-maven-plugin:1.2:java (default) on project
>     >>> restapi-definition: An exception occured while executing the
>     Java class.
>     >>> null: InvocationTargetException: NullPointerException -> [Help 1]
>     >>> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
>     >>> execute goal org.codehaus.mojo:exec-maven-plugin:1.2:java
>     (default) on
>     >>> project restapi-definition: An exception occured while executing the
>     >>> Java class. null
>     >>> at
>     >>>
>     org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
>     >>> ...
>     >>> at javax.xml.bind.JAXB.marshal(JAXB.java:332)
>     >>> at
>     >>>
>     org.ovirt.engine.api.rsdl.RsdlManager.serializeRsdl(RsdlManager.java:134)
>     >>> at
>     >>>
>     org.ovirt.engine.api.rsdl.RsdlManager.generateRsdlFile(RsdlManager.java:84)
>     >>> at org.ovirt.engine.api.rsdl.RsdlManager.main(RsdlManager.java:58)
>     >>> ... 6 more
>     >>>
>     >>>
>     >>> My questions are:
>     >>>
>     >>> 1 I know the error occurs in
>     >>> file
>     >>>
>     backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java,
>     >>> but how to debug it?
>     >>>
>     >>> 2 When I remove pom and jar files of javax.xml.bind.JAXB in mave
>     repo
>     >>> with offline mode, it still could find the class.
>     >>> Which javax.xml.bind.JAXB is used? I searched the ovirt engine
>     repo but
>     >>> didn't find it either.
>     >>>
>     >>
>     >> The version of JAXB used by that area of the code is the version
>     of JAXB
>     >> included in the JDK that you are using for the build. So the
>     question is
>     >> what version of the JDK are you using?
>     >>
>     >> Hi Juan,
>     >>
>     >> I am using icedtea7 to build openjdk-7. And I found the JAXB file.
>     >
>     > note: I saw same line using java-1.8.0-openjdk installed from repo.
>     >
>
>     The build of the master branch (what will eventually be oVirt 4)
>     requires Java 8, but Kai Kang is trying to build 3.6.4.1, which should
>     build correctly with Java 7. I just tried that, with the version of
>     OpenJDK 7 included in CentOS 7:
>
>       $ java -version
>       java version "1.7.0_85"
>       OpenJDK Runtime Environment (rhel-2.6.1.2.el7_1-x86_64 u85-b01)
>       OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode
>
>     Kai Kang, from the "icedtea7" and "openjdk-7" names I assume that you
>     aren't using CentOS or Fedora, which are the typical distributions used
>     for oVirt. What distribution are you using exactly? And what version of
>     openjdk-7 exactly? If you share that information we may be able to
>     reproduce.
>
>
> I am working on cross-compile with Yocto project. So the java is built
> from openjdk source.
>
> $ java -version
> java version "1.7.0"
> JamVM version 2.0.0
> Copyright (C) 2003-2014 Robert Lougher <rob@jamvm.org.uk
> <mailto:rob@jamvm.org.uk>>
>
> ...
>
> Build information:
>
> Execution Engine: inline-threaded interpreter
> Compiled with: gcc 4.8.2
>
> Boot Library Path:
> /buildarea3/kkang/builds/ovp-intel-Mar15/bitbake_build/tmp/sysroots/x86_64-linux/usr/lib/cl
> asspath
> Boot Class Path:
> /buildarea3/kkang/builds/ovp-intel-Mar15/bitbake_build/tmp/sysroots/x86_64-linux/usr/share/ja
> mvm/classes.zip:/buildarea3/kkang/builds/ovp-intel-Mar15/bitbake_build/tmp/sysroots/x86_64-linux/usr/share/cla
> sspath/glibj.zip
>
>
> ovirt-engine 3.5.x could be built successfully. But none of 3.6.x could
> be built from 3.6.0.
>
>
>
>
>     >>
>     >> Would you like to give some advice how to debug this issue? Does jdb could
>     >> debug such code?
>     >>
>
>     The easiest way to debug this to have an IDE, like IntelliJ Idea, or
>     Eclipse, set a breakpoint in the relevant line and then debug the Maven
>     build.
>
>     You may be able to debug the Maven build with "jdb" as well, but I can't
>     help you with that, I'm not familiar with it.
>
>     I'd suggest to perform the build of the relevant component only, using
>     the Maven -X option. For example:
>
>     1. Do a complete build of the engine, manually:
>
>       $ mvn clean install -DskipTests
>
>     This should fail in the same point where it failed previously, as you
>     will be using the same JDK.
>
>     2. Change to the directory of the failing component, and repeat the
>     build, with the "-X" flag:
>
>       $ cd backend/manager/modules/restapi/interface/definition
>       $ mvn clean install -X -DskipTests > build.log
>
>     That should fail again, but there will be more information in the
>     "build.log" file. Inspect and maybe share it with us.
>
>
> The error occurs in
>
> ./backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/rsdl/RsdlManager.java
>
> to deal with "/rsdl_metadata.yaml".
>
> I tried to copy rsdl_metadata.yaml from 3.5.1.1 to cover the file in
> build directory, but it stills to fail.
>
> The build log is pasted at:
>
> https://gist.github.com/parr0tr1ver/11760d866e6f40990e59c772cd6bca6f
>
> I'll try to debug it by eclipse.
>

The problem looks like this JAXB bug:

  https://java.net/jira/browse/JAXB-860

Any chances that your JDK includes a version of JAXB that isn't fixed?
As you are building the JDK from source you may be able to update the
version of JAXB.

Hi Juan,

It is the root cause of my problem.

Thanks for your great help.

--Kai

 

--
Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta
3ºD, 28016 Madrid, Spain
Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat S.L.