В моем коде у меня есть вложенный класс, который содержит объект и целое число. Это должно означать начальное и конечное местоположения для метода подсписок.Отладка ClassNotFoundException
Код исполняется до той точки, в которой объект и целое число имеют установленные значения. Я проверил это в отладчике.
Следующая строка затем вызывает ListLoc<E> startNode= new ListLoc<E>(start, startElement);
, и это то, что делает исключение.
Класс уже определен как
private class ListLoc<E>{
public Chunk<E> node;
public int index;
/* This object is created to hold a chunk and index location. Two
* objects will be created for the start and end locations for
* creating a sublist
*/
public ListLoc(Chunk<E> node, int index){
this.node= node;
this.index= index;
}
}
Странная вещь эта часть кода выполнял отлично, прежде чем я заменил местный startNode с глобальной переменной. Эта идея не сработала, поэтому я изменил переменную обратно, и это исключение возникло.
Я не вносил изменений в путь или исполнение класса. Единственный раз, когда это всплывает в отладчик
EDIT:. Добавлен трассировки стека
ClassNotFoundException (Throwable) (String, Throwable) строка:. 217
ClassNotFoundException (Исключение) (строка, Throwable) линия:. нет в наличии ClassNotFoundException линия (String): нет в наличии
URLClassLoader $ 1.run() линия: нет в наличии
AccessController.doPrivileged линия (PrivilegedExceptionAction, AccessControlContext): не доступен [нативный метод]
L auncher $ ExtClassLoader (URLClassLoader) .findClass (String) строка: не доступно
линия Launcher $ ExtClassLoader.findClass (String): не доступно
линия Launcher $ ExtClassLoader (ClassLoader) .loadClass (String, Boolean): не доступен Launcher $ AppClassLoader (ClassLoader) .loadClass (String, булево) строка: не доступен Launcher $ AppClassLoader.loadClass (String, булево) линия: нет в наличии
Launcher $ AppClassLoader (ClassLoader) .loadClass (String) строка: не доступно
Из того, что мне кажется, это классLoader, который вызывает исключение.
Как сотрудник сказал бы, Java не имеет «реальные дженерики», как это делает .NET. Поэтому вы не можете сказать «новый E()» или что-то в этом роде. – StriplingWarrior
Добавлена трассировка стека. Дело в том, что я не пытаюсь составить список E, это всего лишь начальный и конечный указатель. Объект будет отправлен в цикл, который проходит через список и копирует значения между начальной и конечной точками в новый список. – Jason
@Jason: Вы правы в том, что ClassLoader запускает исключение. Однако это преднамеренное поведение. В вашем примере вы создаете объект ListLoc, который работает с общим типом (E). – bogertron