首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jruby中实现自定义java类

在jruby中实现自定义java类
EN

Stack Overflow用户
提问于 2010-07-02 04:10:52
回答 1查看 336关注 0票数 2

我正在尝试在jRuby中实现来自Stanford NLP Parser的一组java类

我可以用jRuby实现常规的Java,但不能实现斯坦福的解析器类

代码语言:javascript
复制
#my requires/imports/includes, included multiple versions to be safe
require 'java'
include Java
require 'c:\\stanford-parser\\stanfordparser.jar'
require 'C:\\Stanford-Parser\\Current\\stanford-parser.jar'
require 'c:\\sun\\stanfordparser'
require 'rubygems'
include_class 'edu.stanford.nlp.parser.lexparser.LexicalizedParser'


#try to create an object of the java class i am importing, LexicalizedParser
lp = edu.stanford.nlp.parser.lexparser.LexicalizedParser
#the line above is what causes the error

#check if regular Java is working
list = java.util.ArrayList.new 
a = "1"
b = "2"
list.add(a)
list.add(b)
d = list[0]
puts d # all of this works

我得到了这个错误

代码语言:javascript
复制
~\rubyjavatest\lib\main.rb:15: undefined local variable or method `edu' for main:Object (NameError)

(~表示我剪掉了整个路径以缩短此路径)

另外,如果我尝试这样做:

代码语言:javascript
复制
lp = java::edu::stanford::nlp.parser::lexparser::LexicalizedParser

我得到了这个错误

代码语言:javascript
复制
~\rubyjavatest\lib\main.rb:15: cannot load Java class java.edu.stanford.nlp.parser.lexparser.LexicalizedParser (NameError)

任何帮助都是最好的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-02 04:15:43

试试这个:lp = LexicalizedParser.new

您需要像处理ArrrayList一样调用new。此外,在调用include_class之后,您不应该需要列出完全限定的类名。

我不熟悉斯坦福的NLP解析器,所以我假设它会工作。可能需要将额外的参数传递给构造函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3161312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档