我參加了杜克大學由coursera提供的 "Java-Programming-Array-Lists-and-Structured-data "課程。
為了方便,我使用Eclipse而不是BlueJ。但當我試圖編譯程式時,我得到了以下錯誤。
執行緒 "main "中的例外 java.lang.NoClassDefFoundError: edu/duke/FileResource
我已經匯入了jar檔案edu.duke.*并試圖從main方法中運行程式。 誰能幫助我解決這個問題呢?
import java.lang.*;
輸入edu.duke.*;
public class WordLengths {
public void countWordLengths (FileResource resource, int[] counts) {
for(String word:resource.words() ) {
int wordLength = word.length();
for(int i = 0; i < wordLength; i ) {
char curChar = word.charAt(i);
if((i == 0) || (i == wordLength - 1)) {
if(!Character.isLetter(curChar))
wordLength--。
}
}
counts[wordLength] 。
System.out.println(" Words of length " wordLength " " word)。
}
}
public void indexOfMax (int[] values) {
int maxIndex = 0;
int position = 0;
for(int i = 0; i < values.length; i ) {
if(values[i] > maxIndex) {
maxIndex = values[i];
position = i;
}
}
System.out.println("最常用的詞是: " position)。
}
public void testCount WordLengths () {
FileResource f = new FileResource("C:UsersRamish-HPeclipse-workspaceAssignment1smallHamlet.txt")。
int[] counts = new int[31];
countWordLengths(f, counts)。
indexOfMax(counts)。
}
}
public class WordLengthsTest {
public static void main(String[] args) {
WordLengths wl = new WordLengths();
wl.testCountWordLengths()。
}
}
uj5u.com熱心網友回復:
java.lang.NoClassDefFoundError如果Java虛擬機或ClassLoader實體試圖加載一個類的定義(作為普通方法呼叫的一部分或作為使用new運算式創建一個新實體的一部分),但沒有找到該類的定義,則通常會拋出這個錯誤。 當當前執行的類被編譯時,搜索到的類定義是存在的,但該定義已經找不到了。
參考文獻。https://docs.oracle.com/javase/7/docs/api/java/lang/NoClassDefFoundError.html
我將建議檢查運行時庫。
uj5u.com熱心網友回復:
如果Java虛擬機或ClassLoader實體試圖加載一個類的定義(作為正常方法呼叫的一部分或作為使用new運算式創建一個新實體的一部分),但沒有找到該類的定義,則會拋出NoClassDefFoundError。當當前執行的類被編譯時,搜索到的類定義是存在的,但該定義已經找不到了。簡單地說,該類在編譯時是可用的,但在運行時卻不見了。
除錯癥狀以找到根本原因是很重要的。
http://javareferencegv.blogspot.com/2013/10/debugging-javalangnoclassdeffounderror.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/308364.html
標籤:
上一篇:程式運行時,classpath中包含的slf4j未被選中
下一篇:沒有可行的多載'='和繼承權
