NoClassDefFoundError: org/w3c/dom/events/CustomEvent on call to createJeuclidDom

79 Views Asked by At

I'm learning to use jeuclid-core-3.1.9 in java using the Netbeans development platform with Maven. All dependencies were generated automatically by Netbeans based on the imports in the source code.

I tried to create a MathML tree from the DOM I created from a MathML formula contained as a string in my program. However, the code below encounters the exception NoClassDefFoundError on the call to createJeuclidDOM. The missing class is org/w3c/dom/events/CustomEvent. This class appears in the Projects window as part of package org.w3c.dom.events in the batik-ext-1.7 jar file. However, when you select the class, nothing shows up in the Navigator window, suggesting it's not really there. I suspect I'm up against a compatibility issue, but I can't imagine what it is.

The source code:

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 */

package com.mycompany.jeuclidtrial;

import java.io.IOException;
import java.io.StringReader;
import javax.xml.transform.stream.StreamSource;
import net.sourceforge.jeuclid.parser.Parser;
import org.w3c.dom.Document;
import net.sourceforge.jeuclid.DOMBuilder;
import net.sourceforge.jeuclid.elements.generic.DocumentElement;
import net.sourceforge.jeuclid.swing.JMathComponent;
import org.xml.sax.SAXException;

/**
 *
 * @author Tony
 */
public class JeuclidTrial {

    public static void main(String[] args) {
        String formula;
        
        formula = "<?xml version=\"1.0\"?>";
        formula += "<math mode=\"content\" xmlns=\"http://www.w3.org/1998/Math/MathML\">";
        formula += "<apply><power/><apply><plus/><ci>a</ci><ci>b</ci><ci>c</ci></apply><cn>2</cn></apply>";
        formula += "</math>";

        try {
            /**
             * This code adapted from
             * https://jeuclid.sourceforge.net/index.html
             */
            
            StringReader aStreamReader = new StringReader(formula);
            StreamSource aStreamSource = new StreamSource(aStreamReader);
            Parser aParser = Parser.getInstance();
            Document theDocument  = aParser.parseStreamSource(aStreamSource);
            DOMBuilder dBuilder = net.sourceforge.jeuclid.DOMBuilder.getInstance();
            DocumentElement theDocumentElement = dBuilder.createJeuclidDom(theDocument);
            JMathComponent theMathComponent = new JMathComponent();
            theMathComponent.setDocument(theDocumentElement);
        }
        catch (SAXException e) {
            System.out.println(e.getMessage());
            System.exit(0);
        }
        catch (IOException e) {
            System.out.println(e.getMessage());
            System.exit(0);
        }
        
        
        System.out.println("Hello World!");
    }
}

The stack trace follows:

        Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/events/CustomEvent
    at java.base/java.lang.Class.getDeclaredFields0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredFields(Class.java:3297)
    at java.base/java.lang.Class.getField0(Class.java:3482)
    at java.base/java.lang.Class.getField(Class.java:2115)
    at net.sourceforge.jeuclid.elements.JEuclidElementFactory.addClass(JEuclidElementFactory.java:146)
    at net.sourceforge.jeuclid.elements.JEuclidElementFactory.<clinit>(JEuclidElementFactory.java:186)
    at net.sourceforge.jeuclid.elements.generic.DocumentElement.createElementNS(DocumentElement.java:165)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(SAX2DOM.java:159)
    at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:206)
    at java.xml/com.sun.org.apache.xml.internal.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:250)
    at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.startElement(ToXMLSAXHandler.java:648)
    at java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.startElement(ToXMLSAXHandler.java:510)
    at jdk.translet/die.verwandlung.GregorSamsa.http$colon$$slash$$slash$www$dot$w3$dot$org$slash$1998$slash$Math$slash$MathML$colon$template$dot$34()
    at jdk.translet/die.verwandlung.GregorSamsa.applyTemplates()
    at jdk.translet/die.verwandlung.GregorSamsa.http$colon$$slash$$slash$www$dot$w3$dot$org$slash$1998$slash$Math$slash$MathML$colon$template$dot$206()
    at jdk.translet/die.verwandlung.GregorSamsa.applyTemplates()
    at jdk.translet/die.verwandlung.GregorSamsa.http$colon$$slash$$slash$www$dot$w3$dot$org$slash$1998$slash$Math$slash$MathML$colon$template$dot$0()
    at jdk.translet/die.verwandlung.GregorSamsa.applyTemplates()
    at jdk.translet/die.verwandlung.GregorSamsa.transform()
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:627)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:782)
    at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:395)
    at net.sourceforge.jeuclid.DOMBuilder.applyTransform(DOMBuilder.java:217)
    at net.sourceforge.jeuclid.DOMBuilder.createJeuclidDom(DOMBuilder.java:202)
    at net.sourceforge.jeuclid.DOMBuilder.createJeuclidDom(DOMBuilder.java:155)
    at net.sourceforge.jeuclid.DOMBuilder.createJeuclidDom(DOMBuilder.java:135)
    at com.mycompany.jeuclidtrial.JeuclidTrial.main(JeuclidTrial.java:42)
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.events.CustomEvent
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 27 more
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:1000)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:947)
    at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:471)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:342)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:330)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:175)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:76)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:163)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:160)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:827)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:272)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:195)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

After this printout, the log from a failed build occurs:

BUILD FAILURE
------------------------------------------------------------------------
Total time:  7.466 s
Finished at: 2023-09-05T09:33:22-05:00
------------------------------------------------------------------------
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.1.0:exec (default-cli) on project jeuclidTrial: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
0

There are 0 best solutions below