我试图通过要求latest stable Mahout distribution中的以下三个JAR文件在JRuby中使用Mahout。
我尝试使用的一些类工作正常,但有些特别是没有加载。相反,我得到像这样的例外:
NameError: missing class or uppercase package name (`org.apache.mahout.cf.taste.impl.recommender.GenericBooleanPrefUserBasedRecommender')
get_proxy_or_package_under_package at org/jruby/javasupport/JavaUtilities.java:54
method_missing at file:/Users/bloudermilk/.rbenv/versions/jruby-1.7.10/lib/jruby.jar!/jruby/java/java_package_module_template.rb:14
(root) at _test.rb:9
我确信该类存在于包中,如it is mentioned in the docs。实际上我也可以解压缩mahout-core
JAR并查看其中的相应.class
文件。
我在这里将测试回购上传到GitHub:https://gist.github.com/bloudermilk/8832036
我没有任何Java经验,所以我似乎错过了一些明显的东西。为什么JRuby不能找到这个课程?我该如何解决这个问题?
答案 0 :(得分:1)
当我尝试这个时,我收到了如下错误:
Java::OrgApacheMahoutCfTasteImplRecommender::GenericBooleanPrefUserBasedRecommender
NameError: cannot link Java class org.apache.mahout.cf.taste.impl.recommender.GenericBooleanPrefUserBasedRecommender, probable missing dependency:
我的猜测是你的类路径上没有东西。我采用“大锤子”的方法来获取类路径中的所有内容并且能够使其工作:
Dir['./mahout/*jar'].each {|f| require f}
Dir['./mahout/lib/*jar'].each {|f| require f}
Java::OrgApacheMahoutCfTasteImplRecommender::GenericBooleanPrefUserBasedRecommender