Я разбираюсь в XML-файле, используя SAX, но когда я вызываю загрузчик классов в классе, вызывается java.lang.InstantiationException
.Как решить "java.lang.InstantiationException"?
Я отлаживал это по причине исключения: «Брошено, когда приложение пытается создать экземпляр класса с использованием метода newInstance в классе Class, но указанный объект класса не может быть создан, поскольку он является интерфейсом или абстрактного класса ".
Но класс location
не является интерфейсом или абстрактным классом. Я также проверил, что класс находится в правильном пакете, и это так.
Кто-нибудь знает, почему в этом случае возникает исключение?
Исключение бросают только после первого Println в StartElement класса Parser:
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
if (qName.equals("location")){
location = true;
System.out.println("Found a location...");
//exception thrown after this statement as shown
//in the error output below
try {
//Read in the values for the attributes of the element <location>
int locationID = Integer.parseInt(atts.getValue("id"));
String locationName = atts.getValue("name");
//Generate a new instance of Location on-the-fly using reflection. The statement Class.forName("gmit.Location").newInstance(); invokes the
//Java Class Loader and the calls the null (default) constructor of Location.
Location loc = (Location) Class.forName("gmit.Location").newInstance();
loc.setId(locationID); //Now configure the Location object with an ID, Name, Description etc...
loc.setName(locationName);
} catch (Exception e) {
e.printStackTrace();
}
}else if (qName.equals("description")){
description = true;
System.out.println("Found a description. You should tie this to the last location you encountered...");
}else if (qName.equals("exits")){
exits = true;
System.out.println("Found an exit. You should tie this to the last location you encountered...");
}else if (qName.equals("item")){
item = true;
System.out.println("Found an item. You should tie this to the last game-character you encountered if the boolean gameCharacter flag is true...");
}else if (qName.equals("game-character")){
gameCharacter = true;
System.out.println("Found a game character...");
}else if (qName.equals("search-algorithm")){
searchAlgorithm = true;
System.out.println("Found a search algo. You should tie this to the last game-character you encountered if the boolean gameCharacter flag is true...");
}
}
Мой полный класс местоположение:
http://hastebin.com/yofuyafipe.java
Ошибки бросают во время выполнения :
http://hastebin.com/jonozeyefe.avrasm
Вероятно, вам нужен конструктор класса Location, который не принимает никаких аргументов. – sje397
Не используйте форматирование кода для текста, который не является кодом, и не публикуйте ссылки на вопрос, который является частью вашего вопроса. Отправьте его здесь *. – EJP
И в следующий раз ... включите полную стеклу. –