让人烦恼的org.xml.sax.SAXNotRecognizedException错误

本文介绍了解决在使用Ant编译JasperReport时遇到的SAXNotRecognizedException错误的过程。通过调整CLASSPATH中xerces.jar的位置及在Eclipse中配置Ant依赖包的方式解决了该问题。
部署运行你感兴趣的模型镜像
今天在执行ant任务,编译japerreport文件的时候,遇到一个org.xml.sax.SAXNotRecognizedException: Feature: http://apache.org/xml/features/validation/dynamic错误,不知道什么原因,多方查找,在网上找到一段资料。如下:
java.lang.NoClassDefFoundError: org/xml/sax/SAXNotRecognizedException 
你需要保证xerces.jar文件在CLASSPATH中位于其他XML类,如JAXP或Crimson之前,这些类文件,包括以前老版本的xerces,可能不支持SAX2.0或DOM Level 2。于是导致了上面的错误。

上面的说明与我的错误并不是直接相关,那这说明我是不是也有可能存在类似的问题呢?如是要,我该怎么办?我首选想办法在ant文件的前面加入
	<path id="classpath">
<pathelement location="./"/>
<pathelement location="${classes.dir}" />
<pathelement location="${fonts.dir}" />
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>

加入xercesImpl.jar文件,可是并没有效果,那么应该怎样来加呢?
后面想到在学习hibernate源码的时候,曾经在eclipse里面改过ant的依赖包(window-perferences-ant),于是我依法炮制,果然成功了。

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

Package org.xml.saxJava 中用于处理 XML 文档的一个标准 API。它提供了一种基于事件的解析方法,可以在读取 XML 文件时触发各种事件,如元素开始、元素结束、字符数据等。通过这种方式,开发者可以方便地处理和操作 XML 数据。 org.xml.sax 包主要包括以下几个核心接口和类: 1. **ContentHandler**: 这是 SAX 解析过程中最主要的接口,用于接收解析事件的通知。常见的方法包括 `startElement`、`endElement` 和 `characters` 等。 2. **DTDHandler**: 用于处理 DTD(文档类型定义)相关的事件,例如 `notationDecl` 和 `unparsedEntityDecl`。 3. **EntityResolver**: 用于解析实体引用,可以通过实现这个接口来控制如何处理外部实体。 4. **ErrorHandler**: 用于处理解析过程中出现的错误和警告,包含 `warning`、`error` 和 `fatalError` 三个方法。 5. **InputSource**: 表示输入源的抽象类,通常用于包装输入流或字符流,以便传递给解析器。 6. **Locator**: 提供解析位置信息的接口,包括行号、列号等信息。 7. **SAXException**: 自定义异常类,用于在解析过程中抛出错误或中断解析。 8. **SAXNotRecognizedException**: 当解析器遇到不认识的特性或值时抛出此异常。 9. **SAXNotSupportedException**: 当解析器不支持某个特性或值时抛出此异常。 10. **SAXParseException**: 在解析过程中发生错误时抛出此异常,继承自 `SAXException`。 使用 org.xml.sax 包进行 XML 解析的基本步骤如下: 1. 创建一个实现了 `ContentHandler` 接口的处理器类。 2. 创建 `SAXParserFactory` 实例并配置解析器。 3. 使用 `SAXParser` 对象解析 XML 文档,并将 `ContentHandler` 实例传递给解析器。 4. 在 `ContentHandler` 的方法中处理各种解析事件。 示例代码: ```java import org.xml.sax.*; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; public class MySAXHandler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println("Start Element: " + qName); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("End Element: " + qName); } @Override public void characters(char ch[], int start, int length) throws SAXException { System.out.println("Characters: " + new String(ch, start, length)); } } public class Main { public static void main(String[] args) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); MySAXHandler handler = new MySAXHandler(); saxParser.parse("example.xml", handler); } catch (Exception e) { e.printStackTrace(); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值