Home > Back-end >  How to solve NoClassDefFoundError?
How to solve NoClassDefFoundError?

Time:09-17

I am enrolled in the Duke University course offered by coursera "Java-Programming-Arrays-Lists-and-Structured-data".

I am using Eclipse instead of using BlueJ for my own ease. But when I try to compile the program I get the following error.

Exception in thread "main" java.lang.NoClassDefFoundError: edu/duke/FileResource

I have imported the jar file edu.duke.* and trying to run the program from the main method. Can someone kindly help how to solve this problem?

import java.lang.*;
import 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("The most common word is :"  position);
    }
    
    public void testCountWordLengths () {
        
        FileResource f = new FileResource("C:\\Users\\Ramish-HP\\eclipse-workspace\\Assignment1\\smallHamlet.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();
}

}

CodePudding user response:

java.lang.NoClassDefFoundError commonly thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found. The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

Reference: https://docs.oracle.com/javase/7/docs/api/java/lang/NoClassDefFoundError.html

I will suggest to check run time libraries.

CodePudding user response:

A NoClassDefFoundError is thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found. The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found. In simple words, the class was available at compile time but missing during runtime.

It is important to debug the symptoms to find the root cause. Below link will help you out to do that one by one:

http://javareferencegv.blogspot.com/2013/10/debugging-javalangnoclassdeffounderror.html

  • Related