在我的代碼中,我有一個嵌套類,它包含一個對象和一個整數。這是爲了標記子列表方法的開始和結束位置。調試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。這個想法沒有解決,所以我改變了這個變量,這個異常突然出現了。
我沒有改變類路徑或執行。這種作物向上的唯一時間是在調試器
編輯:加入堆棧跟蹤
ClassNotFoundException的(Throwable的)(字符串,Throwable的)線:217
ClassNotFoundException的(異常)(字符串,Throwable的)行:不可用 ClassNotFoundException的(字符串)行:不可用
URLClassLoader的$ 1.run()行:不可用
AccessController.doPrivileged(的PrivilegedExceptionAction,AccessControlContext的)行:不可用[本機方法]
大號auncher $的ExtClassLoader(URLClassLoader的).findClass(字符串)行:不可用
啓動$ ExtClassLoader.findClass(字符串)行:不可用
啓動$的ExtClassLoader(ClassLoader的).loadClass(字符串,布爾)行:不可用 啓動$ AppClassLoader器(classloader).loadClass(字符串,布爾)行:不可用 啓動$ AppClassLoader.loadClass(字符串,布爾)行:不可用
啓動$ AppClassLoader器(classloader).loadClass(字符串)行:不可用
從它看起來對我來說,它是觸發異常的classLoader。
作爲一位同事會說,Java沒有「真正的泛型」就像.NET一樣。所以你不能說「新E()」或類似的東西。 – StriplingWarrior 2010-10-21 20:50:19
添加了堆棧跟蹤。事情是,我沒有試圖列出E,它只是一個開始和結束指針。該對象將被髮送到遍歷列表的循環,並將開始點和結束點之間的值複製到新列表中。 – Jason 2010-10-21 21:00:11
@Jason:你正確的是ClassLoader觸發異常。但是,這是故意的行爲。在你的例子中,你正在創建一個使用泛型類型(E)的ListLoc對象。 – bogertron 2010-10-21 21:01:27