Java 小程序故障中的SAX解析器
我的源代码中有一行非常简单的代码:Java 小程序故障中的SAX解析器,java,applet,sax,Java,Applet,Sax,我的源代码中有一行非常简单的代码: XMLReader xmlReaderFactory = XMLReaderFactory.createXMLReader(); 这在应用程序中可以完美地工作,但是,在applet中,它尝试从服务器加载“.class”文件(没有类名,只是扩展名,正如您所看到的那样),然后无法给我一个解析器 Exception in thread "Thread-13" java.lang.ClassFormatError: Incompatible magic value
XMLReader xmlReaderFactory = XMLReaderFactory.createXMLReader();
这在应用程序中可以完美地工作,但是,在applet中,它尝试从服务器加载“.class”文件(没有类名,只是扩展名,正如您所看到的那样),然后无法给我一个解析器
Exception in thread "Thread-13" java.lang.ClassFormatError: Incompatible magic value 218762506 in class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.xml.sax.helpers.NewInstance.newInstance(Unknown Source)
at org.xml.sax.helpers.XMLReaderFactory.loadClass(Unknown Source)
at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Unknown Source)
可能是什么问题?您可能从该类文件的服务器返回404错误。有关详细信息,请参阅此部分。看起来您正在尝试配置使用除JRE中的SAX实现之外的SAX实现。配置指向一个以至少两行空行开头的Windows文本文件。SAX实现可以通过系统属性
org.xml.SAX.driver
进行配置,或者包含在名为META-INF/services/org.xml.SAX.driver
的jar文件中,我想这是可能的。目前,我已经通过硬编码xml解析器名称(丑陋)解决了这个问题。为什么它甚至会尝试加载一个空名称的类呢?啊。它尝试读取网页META-INF/services/org.xml.sax.driver。因为您的web服务器表现不好,所以它会返回一个第一行为空的有效页面。它使用该空行作为要加载的类名。同样,由于web服务器故障,它会作为文件启动返回\r\n\r\n。因此,快速修复-我认为您可以在web服务器上放置一个该名称的完全空文件(或者只修复web服务器)。