I am learning to use mahout by starting with a example copied from the book. However, the eclipse compiler gives me the following message:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<clinit>(FileDataModel.java:119)
at mia.recommender.ch02.RecommenderIntro.main(RecommenderIntro.java:18)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 2 more

It seems to me that the the problem comes from FileDataModel.java, which belongs to this libary itself. How to trace back or analyze this error.

The example code is given as follows, which exactly is the one copied from the book. The line causing the trouble is

DataModel model = new FileDataModel(new File("intro.csv"));

import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.model.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.*;
import java.io.*;
import java.util.*;
class RecommenderIntro {
  public static void main(String[] args) throws Exception {
	
	
    DataModel model = new FileDataModel(new File("intro.csv")); 
    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood =
      new NearestNUserNeighborhood(2, similarity, model);
    Recommender recommender = new GenericUserBasedRecommender(
        model, neighborhood, similarity); 
    List<RecommendedItem> recommendations =
        recommender.recommend(1, 1); 
    for (RecommendedItem recommendation : recommendations) {
      System.out.println(recommendation);
    }
  }
}

Recommended Answers

All 2 Replies

the eclipse compiler gives me the following message:

Strange, looks like an execution error. But I don't know your IDE so maybe it is compiler.

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

Where is the class that is referred to in this error message?

Yeah, it looks like some class path issue and not exactly a compilation error.

Answer NormR's question..

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

Where is the class that is referred to in this error message?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.