Search code examples
javaamazon-ec2mahout

What does this java error mean java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource


I've been trying to run Mahout on a amazon ec2 instance. I keep getting an error when the script executes.

my config script is like this

CLASSPATH=recommender/recommender.jar:async/async-command.jar:async/lib/:./.m2/repository/org/apache/mahout/mahout-core/0.6/

    java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/impl/model/jdbc/ConnectionPoolDataSource
    at org.drupal.project.recommender.RunRecommender$AlgorithmImpl.initDataModel(RunRecommender.java:671)
    at org.drupal.project.recommender.RunRecommender$AlgorithmImpl.run(RunRecommender.java:954)
    at org.drupal.project.recommender.RunRecommender.run(RunRecommender.java:435)
    at org.drupal.project.async_command.Druplet.runSerial(Druplet.java:379)
    at org.drupal.project.async_command.Druplet.run(Druplet.java:284)
    at org.drupal.project.async_command.CommandLineLauncher.handleExecutables(CommandLineLauncher.java:107)
    at org.drupal.project.async_command.CommandLineLauncher.launch(CommandLineLauncher.java:66)
    at org.drupal.project.recommender.RecommenderApp.main(RecommenderApp.java:37)
Caused by: java.lang.ClassNotFoundException: org.apache.mahout.cf.taste.impl.model.jdbc.ConnectionPoolDataSource
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

I understand that this means that some class was not found, I have no idea how to fix it


Solution

  • On you amazon box you need to ensure that this path :./.m2/repository/org/apache/mahout/mahout-core/0.6/

    exists and unless you are reading class files from this directory, then you modify this line to include that jar file name

    e.g.

    :./.m2/repository/org/apache/mahout/mahout-core/0.6/mahout_core.0.6.jar