Java 使用Mahout中的模型找不到ClassNotFound
大家好,在我尝试使用mahout时,在遵循文档和教程之后,我遇到了这个错误。它抱怨数据模型,即使它包含在pom.xml中。有人能告诉我我做错了什么吗: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
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