2010-07-06 3 views
0

J'essayais d'analyser le document mathml en utilisant JScience mais je n'ai pas réussi. Voici mon morceau de code.Analyse du document mathml à l'aide de JScience

import JSci.io.*; 
import JSci.mathml.*; 
    . 
    . 
public class ParsingMathML(){ 
try { 
     .... 
     //inputFile is an xml file containing mathml code 
InputSource file = new InputSource(new FileReader(inputFile)); 
MathMLParser parser = new MathMLParser(); 
parser.parse(file); 

Object[] parseList = parser.translateToJSciObjects(); 
}catch (Exception e) { 
e.printStackTrace(); 
} 
} 

J'ai eu une erreur à partir d'ici, donc je ne pouvais rien faire d'autre. Voici la StackTrace:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: JSci/maths/fields/Ring$Member 
at JSci.io.MathMLParser.translateToJSciObjects(Unknown Source) 
at JSci.io.MathMLParser.translateToJSciObjects(Unknown Source) 
at mathML.ProcessMathML.processFile(ParsingMathML.java:109) 
at mathML.ProcessMathML.actionPerformed(ParsingMathML.java:72) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
at javax.swing.AbstractButton.doClick(Unknown Source) 
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source) 
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: JSci.maths.fields.Ring$Member 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
... 31 more 

Aussi, ne quelqu'un a une idée d'utiliser MathMLApplyElementImpl, MathMLDocumentImpl ou d'autres classes de package JSci.mathml?

Ce sera génial si vous pouvez fournir un exemple de code sur la façon d'analyser le document mathml.

Toute idée sera très appréciée. Merci

Répondre

2

En cochant votre bogue précis, il semble que la classe JSci.maths.fields.Ring$Member n'existe pas, ce qui déclenche une exception ClassNotFoundException dans la méthode JSci.io.MathMLParser.translateToJSciObjects.

Allons voir ce code source. Dans MathMLParser, l'utilisation la plus notable de Ring.Member est une valeur de retour. Mais il peut être trouvé à de nombreux endroits. Et, puisque Ring.Member est dans JSci.maths.fields, qui semble être dans le même JAR que MathMLParser, je suppose que votre problème est beaucoup plus compliqué qu'une simple ClassNotFoundException.

D'abord, pouvez-vous ouvrir le fichier JScience pour vous assurer qu'il existe JSci.maths.fields.Ring$Member?

Si ce n'est pas le cas, utilisez-vous plusieurs chargeurs de classe dans la même application? (des choses comme OSGi)

+0

Super! Merci Riduiel. Je pourrais corriger cette erreur en important le paquet , qui contient la classe comme vous l'avez deviné. Cependant, le parseList [] est un tableau vide quel que soit le fichier que j'utilise dans le parser.parse (fichier). Avez-vous une idée? Merci – chepukha

Questions connexes