我收到以下异常但无法找到特定于此异常的任何文档:
<head>
<meta charset="UTF-8">
<title>Example - example-ng-click-production</title>
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>
<script>
var app = angular.module('app', []);
app.controller('testController', function() {
var vm = this;
vm.test = test;
function test() {
alert("test");
}
});
</script>
</head>
<body>
<div ng-controller="testController as vm">
<button ng-click="vm.test()">
Test with controllerAs
</button>
</div>
</body>
任何有关正确资源的帮助或指示都会非常有用。
答案 0 :(得分:0)
此异常由DOM解析期间的Sun版本的Xerces解析器生成。不幸的是,隐藏了引发异常的特定代码块(以下内容从JDK 8.0 DOMParser source code转述):
public void parse(InputSource inputSource) throws SAXException, IOException
{
try
{
XMLInputSource xmlInputSource = new XMLInputSource(inputSource.getPublicId(), inputSource.getSystemId(), null);
xmlInputSource.setByteStream(inputSource.getByteStream());
xmlInputSource.setCharacterStream(inputSource.getCharacterStream());
xmlInputSource.setEncoding(inputSource.getEncoding());
parse(xmlInputSource); <-- Original XNIException is thrown in here
} catch (XMLParseException e) {
...
} catch (XNIException e) { // <-- wrap XNI exceptions as SAX exceptions
Exception ex = e.getException();
if (ex == null) { throw new SAXException(e.getMessage()); }
if (ex instanceof SAXException) { throw (SAXException) ex; }
if (ex instanceof IOException) { throw (IOException) ex; }
throw new SAXException(ex); // <-- Note: The original stack trace is lost here.
}
}
由于原始堆栈跟踪被遮挡,实际上只有两种方法可以确定此类解析的实际原因异常:
将调试器附加到DOMParser.parse()
方法并逐步执行代码以查看最初抛出异常的位置。
从XML文档中删除元素,直到不再出现解析错误,然后以小增量添加它们,以确定哪个元素/属性/处理指令/等触发解析器错误。
如果您不想找到错误的来源而只是试图让错误消失,您可以尝试使用不同的XML解析器(例如,最新版本的Apache Xerces而不是默认的Sun Xerces解析器) )。
正如早先的评论者所建议的那样,提供XML文档的副本以及Java的特定版本(例如,JDK 8.0u40b25)可以提供更精确的答案。