Hi Uwe,

Thanks for the leads.

Unfortunately, adding -Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=ICU does not have any effect. Solr throws the same NoClassDefFoundError.

Is there anyway I can get a complete stack trace?

Charlie


On 09/10/2014 14:44, Uwe Schindler wrote:

Hi,

as far as I remember, there was some race with Java 7 and the initialization of timezone data, see also this problem happeing to eclipse users:

http://www.eclipse.org/forums/index.php?t=msg&goto=488277&;

http://www.java-forums.org/eclipse/33414-java-lang-noclassdeffounderror-when-i-run-my-first-project.html

The NoClassDefFoundError happens, because another class related to timezone initialization was not able to initialize before (unfortunately the stack trace is incomplete). Theoretically, this problem should be solved in later ICU versions, but I am not sure, maybe the tzdata file of Debian shipped with JDK is incorrect.

Can you try to start Solr with this system property on Java command line?

-Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=ICU

If this helps, then the timezone database of your Debian JRE is broken.

Uwe

-----

Uwe Schindler

H.-H.-Meier-Allee 63, D-28213 Bremen

http://www.thetaphi.de <http://www.thetaphi.de/>

eMail: [email protected]

*From:*Charlie Orford [mailto:[email protected]]
*Sent:* Thursday, October 09, 2014 2:03 PM
*To:* [email protected]
*Subject:* Re: Moving to Java 7 on debian breaks ICU Normalizer2 on Solr 4.7.2 and Solr 4.10.1

Hi Uwe

I wondered about that but I don't think so. We use the Solr tar file for Solr (i.e. not a debian provided package) and I've chcked the dependencies for the debian java 7 package and can't spot anything ICU related (see here: https://packages.debian.org/wheezy/openjdk-7-jre-headless).

Debian to provide a "libicu4j-4.4-java" package but that isn't installed on our system.

Charlie

On 09/10/2014 12:59, Uwe Schindler wrote:

    Hi,

    Could it be that the Debian Java 7 package or the Debian Solr
    package somehow injects a different version of ICU by a
    dependency? Those errors generally happen if you run into JAR hell
    (different versions of the same package in classpath).

    Uwe

    -----

    Uwe Schindler

    H.-H.-Meier-Allee 63, D-28213 Bremen

    http://www.thetaphi.de <http://www.thetaphi.de/>

    eMail: [email protected] <mailto:[email protected]>

    *From:*Charlie Orford [mailto:[email protected]]
    *Sent:* Thursday, October 09, 2014 1:46 PM
    *To:* [email protected] <mailto:[email protected]>
    *Subject:* Moving to Java 7 on debian breaks ICU Normalizer2 on
    Solr 4.7.2 and Solr 4.10.1

    Hi List

    Posting here on the suggestion of steffkes in IRC.

    We currently run a multicore Solr 4.7.2 installation on debian
    wheezy using the debian provided "default-headless-jre" package
    for java which is JDK 6 based. We also use some ICU filters in our
    schema.xml files so we have icu4j-52.1.jar,
    lucene-analyzers-common-4.7.2.jar, lucene-analyzers-icu-4.7.2.jar,
    lucene-analyzers-smartcn-4.7.2.jar,
    lucene-analyzers-stempel-4.7.2.jar and
    solr-analysis-extras-4.7.2.jar in our solr-home/lib folder.

    We want to move to Solr 4.10.1 which needs Java 7.

    Before upgrading Solr, we first uninstalled the
    "default-jre-headless" package and then installed
    "openjdk-7-jre-headless" so the Java 7 dependency was met.

    However, doing this causes Solr 4.7.2 to throw a core error on start:

    "ERROR org.apache.solr.core.SolrCore Error loading
    core:java.util.concurrent.ExecutionException:
    java.lang.NoClassDefFoundError: com/ibm/icu/text/Normalizer2"

    If we uninstall the "openjdk-7-jre-headless" package and
    re-install the "default-headless-jre" package Solr 4.7.2 starts fine.

    We've also tested a clean install of Solr 4.10.1 on a different
    machine with the debian "openjdk-7-jre-headless" package installed
    (and the 4.10.1 versions of the relevant lucene/solr ICU jar libs)
    and encounter the same NoClassDefFoundError:
    com/ibm/icu/text/Normalizer2 error whenever we try to create a
    core that uses the solr.ICUNormalizer2FilterFactory in its schema.

    Unfortunately, we aren't Java people and only use it for Solr so
    we're not sure how to debug this. Is the problem with the debian
    package? Is the problem with icu4j-52.1.jar? Or is the problem
    something else entirely?

    Any insight appreciated!

    Charlie



Reply via email to