Java 使用Mahout中的模型找不到ClassNotFound

Java 使用Mahout中的模型找不到ClassNotFound,java,maven,mahout,mahout-recommender,Java,Maven,Mahout,Mahout Recommender,大家好,在我尝试使用mahout时,在遵循文档和教程之后,我遇到了这个错误。它抱怨数据模型,即使它包含在pom.xml中。有人能告诉我我做错了什么吗: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/model/DataModel at java.lang.Class.getDeclaredMethods0(Native Method) at

大家好,在我尝试使用mahout时,在遵循文档和教程之后,我遇到了这个错误。它抱怨数据模型,即使它包含在pom.xml中。有人能告诉我我做错了什么吗:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/mahout/cf/taste/model/DataModel
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
        at java.lang.Class.getMethod0(Class.java:2937)
        at java.lang.Class.getMethod(Class.java:1771)
        at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.mahout.cf.taste.model.DataModel
        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 6 more
下面是我的代码:

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.eval.AverageAbsoluteDifferenceRecommenderEvaluator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;

import java.io.File;
import java.util.List;

public class UserBasedRecommendation {

    public static void main(String[] args) {

        try {

            DataModel dataModel = new FileDataModel(new File("path to my file"));
            UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
            UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, dataModel);
            UserBasedRecommender recommender = new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
            List<RecommendedItem> recommendations = recommender.recommend(2, 3);
            for (RecommendedItem recommendation : recommendations) {
                System.out.println(recommendation);
            }

            //evaluation
            RecommenderEvaluator recommenderEvaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
            RecommenderBuilder recommenderBuilder = new MyRecommenderBuilder();
            double result = recommenderEvaluator.evaluate(recommenderBuilder, null, dataModel, 0.9, 1.0);
            System.out.println(result);

        }
        catch (Exception e) {
            System.out.println("There was an error");
            e.printStackTrace();
        }
    }

    static class MyRecommenderBuilder implements RecommenderBuilder {

        public Recommender buildRecommender(DataModel dataModel) throws TasteException {
            UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
            UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, dataModel);
            return new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
        }
    }
}
import org.apache.mahout.cf.taste.common.TasteException;
导入org.apache.mahout.cf.taste.eval.RecommenderBuilder;
导入org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
导入org.apache.mahout.cf.taste.impl.eval.average绝对差异评估器;
导入org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
导入org.apache.mahout.cf.taste.impl.neighbor.thresholdUserNeighbor;
导入org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
导入org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
导入org.apache.mahout.cf.taste.model.DataModel;
导入org.apache.mahout.cf.taste.neighborary.userneighborary;
导入org.apache.mahout.cf.taste.recommender.*;
导入org.apache.mahout.cf.taste.similarity.UserSimilarity;
导入java.io.File;
导入java.util.List;
公共类基于用户的推荐{
公共静态void main(字符串[]args){
试一试{
DataModel DataModel=新文件DataModel(新文件(“我的文件的路径”);
用户相似性=新PearsonCorrelationSimilarity(数据模型);
UserNeighborhood=新阈值UserNeighborhood(0.1,相似性,数据模型);
UserBasedRecommender recommender=新的GenericUserBasedRecommender(数据模型、邻域、相似性);
列表建议=推荐人。推荐(2,3);
对于(建议编辑EM建议:建议){
System.out.println(推荐);
}
//评价
RecommenderEvaluator RecommenderEvaluator=新平均值绝对差异RecommenderEvaluator();
RecommenderBuilder RecommenderBuilder=新建MyRecommenderBuilder();
双重结果=recommenderEvaluator.evaluate(recommenderBuilder,null,dataModel,0.9,1.0);
系统输出打印项次(结果);
}
捕获(例外e){
System.out.println(“有一个错误”);
e、 printStackTrace();
}
}
静态类MyRecommenderBuilder实现RecommenderBuilder{
公共推荐程序构建推荐程序(DataModel DataModel)抛出TasteException{
用户相似性=新PearsonCorrelationSimilarity(数据模型);
UserNeighborhood=新阈值UserNeighborhood(0.1,相似性,数据模型);
返回新的GenericUserBasedRecommiter(数据模型、邻域、相似性);
}
}
}
我的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>edu.sjsu.cmpe239</groupId>
    <artifactId>project1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>Mahout</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-core</artifactId>
            <version>0.9</version>
        </dependency>
    </dependencies>

</project>

4.0.0
edu.sjsu.cmpe239
项目1
1.0-快照
罐子
象夫
http://maven.apache.org
UTF-8
org.apache.mahout
抽油机芯
0.9