我尝试在 JRuby 中使用 Mahout,需要 latest stable Mahout distribution 中的以下三个 JAR 文件。 .
- mahout-core-0.9.jar
- mahout-integration-0.9.jar
- mahout-math-0.9.jar
我尝试使用的一些类工作正常,但特别是一些类未加载。相反,我得到了这样的异常:
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 找不到这个类?我该如何解决这个问题?
最佳答案
当我尝试此操作时,出现如下错误:
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
关于java - 对于某些类,使用 JRuby 中的 Mahout 会引发 "missing class or uppercase package name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587814/