Tôi đã được giao nhiệm vụ tạo một ứng dụng bằng cách sử dụng API WorldWind và để tự làm quen với API, tôi đã thử chạy ứng dụng ví dụ "HelloWorldWind". Khi tôi làm, tôi nhận được đống lỗi sau:Ví dụ ứng dụng WorldWind gặp AbstractMethodError khi bắt đầu
Exception in thread "main" java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
at gov.nasa.worldwind.util.WWXML.createDocumentBuilder(WWXML.java:61)
at gov.nasa.worldwind.util.WWXML.openDocumentStream(WWXML.java:236)
at gov.nasa.worldwind.util.WWXML.openDocumentStream(WWXML.java:223)
at gov.nasa.worldwind.util.WWXML.openDocumentFile(WWXML.java:175)
at gov.nasa.worldwind.util.WWXML.openDocument(WWXML.java:148)
at gov.nasa.worldwind.Configuration.loadConfigDoc(Configuration.java:131)
at gov.nasa.worldwind.Configuration.<init>(Configuration.java:108)
at gov.nasa.worldwind.Configuration.<clinit>(Configuration.java:76)
at gov.nasa.worldwindx.examples.HelloWorldWind.main(HelloWorldWind.java:
WWXML.createDocumentBuilder
là như sau:
public static DocumentBuilder createDocumentBuilder(boolean isNamespaceAware)
{
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setNamespaceAware(isNamespaceAware);
if (Configuration.getJavaVersion() >= 1.6)
{
try
{
docBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",
false); // Not getting past here
}
catch (ParserConfigurationException e)
{ // Note it and continue on. Some Java5 parsers don't support the feature.
String message = Logging.getMessage("XML.NonvalidatingNotSupported");
Logging.logger().finest(message);
}
}
...
Reading some stuff online, người ta đang đổ lỗi cho jogl
, kể từ khi tôi đang chạy trên một hệ thống 64-bit, tuy nhiên , Tôi đã có các lọ cần thiết trong đường dẫn xây dựng của mình.
Ngoài ra, việc thử URL được hiển thị ở trên trong trình duyệt trả về trang 404, điều này khiến tôi nghĩ rằng đó có thể là nguyên nhân
URL chỉ là một cách để định dạng một số tùy chọn. Vì tôi không có nguồn cho DocumentBuilderFactory.setFeature
, tôi không thể thấy điều gì đang rối tung lên trong đó.
Vấn đề của tôi có thực sự với jogl
hoặc cái gì khác không?
tôi chỉ kiểm tra các loại lớp học đó là quay trở lại từ 'DocumentBuilderFactory.newInstance()', và nó là một 'DocumentBuilderFactoryImpl'. Phương thức 'setFeature' được triển khai rõ ràng và theo [this] (http://grepcode.com/file/repo1.maven.org/maven2/xerces/xercesImpl/2.11.0/org/apache/xerces/jaxp/ DocumentBuilderFactoryImpl.java # DocumentBuilderFactoryImpl.setFeature% 28java.lang.String% 2Cboolean% 29), không nên có bất cứ điều gì mà ném một 'AbstractMethodError' trong đó. – MBraedley
@MBraedley Bạn nên kiểm tra phiên bản nào của xerces đang được tải. Bạn có thể làm điều này bằng cách gọi 'MyClass.class.getClassLoader(). GetResource (" org/apache/xerces/jaxp/DocumentBuilderFactoryImpl.class ");' và in URL kết quả. Thay thế một lớp có liên quan cho 'MyClass.class'. 'HelloWorldWind.class' có lẽ sẽ làm. Hy vọng rằng bạn có thể kiểm tra tệp jar được chỉ ra bởi URL để xác định nó cũ bao nhiêu. – Dev
Bình đang được sử dụng là cái mà đi kèm với WorldWind, phiên bản 2.5.0, vì vậy có lẽ nó sẽ hoạt động. Tôi không thấy bất kỳ dấu hiệu nào trong diễn đàn WorldWind rằng đây là vấn đề. – MBraedley