我试图使用JScience解析mathml文档,但没有成功。以下是我的代码片段。
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();
}
}我从这里得到了错误,所以我不能做任何进一步的事情。以下是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另外,有没有人知道如何使用JSci.mathml包中的MathMLApplyElementImpl、MathMLDocumentImpl或其他类?
如果您能提供一些如何解析mathml文档代码示例,那就太好了。
任何想法都将受到高度赞赏。谢谢
发布于 2010-07-06 17:36:00
准确地说,JSci.maths.fields.Ring$Member类似乎并不存在,这会在JSci.io.MathMLParser.translateToJSciObjects方法中抛出一个ClassNotFoundException。
让我们来看看这段源代码。在MathMLParser中,Ring.Member最值得注意的用法是作为返回值。但它可以在很多地方找到。而且,由于Ring.Member在JSci.maths.fields中,似乎与MathMLParser在同一个JAR中,我猜您的问题比简单的ClassNotFoundException复杂得多。
首先,您能否打开JScience jar以确保JSci.maths.fields.Ring$Member确实存在?
如果不是这样,您是否在同一应用程序中使用多个类加载器?(比如OSGi)
https://stackoverflow.com/questions/3184010
复制相似问题