我在Java代码中有以下类:
public class CHRTreeCreator extends IndexCreator { ... }
Run Code Online (Sandbox Code Playgroud)
相反,CHRTreeCreator我想使用也扩展的不同实现IndexCreator,但我想在JRuby中编写代码.问题是,IndexCreator基于xml配置文件选择了具体实现:
<creator>dwe.index.tree.chr.CHRTreeCreator</creator>
Run Code Online (Sandbox Code Playgroud)
代码如下所示:
// className is fetched from XML
Class creatorClass = Class.forName(className);
Constructor constructor = creatorClass.getConstructor(new Class[] { });
creator = (IndexCreator) constructor.newInstance(new Object[] { });
Run Code Online (Sandbox Code Playgroud)
问题是,是否可以在Ruby中实现它,如下所示:
class MyIndexCreator < IndexCreator
end
Run Code Online (Sandbox Code Playgroud)
并以某种方式将MyIndexCreator类名放入XML配置文件中.在这种情况下,模块 - 包映射如何工作?
如果不能通过Java的Class.forName加载Ruby类,我该如何解决这个问题?
我需要一种方法来运行以下nokogiri脚本
#parser.rb
require 'nokogiri'
def parseit()
//...
end
Run Code Online (Sandbox Code Playgroud)
并parseit()在jruby中调用while.rb下运行的while
#main.rb
require 'parser'
parseit()
Run Code Online (Sandbox Code Playgroud)
当然问题是jruby找不到,'nokogiri'因为我没有安装它又名nokogiri-java viajruby -S gem install nokogiri
原因是我在Jruby下运行的nokogiri中发现了一些错误,所以我只在Ruby上安装了nokogiri而不是Jruby.在parser.rb完全下只是红宝石运行.
所以我的目标是能够运行parseit()而无需在Jruby上安装nokogiri!
我正在我公司的内部网上工作
而我正试图从使用ruby 1.8.7切换到jruby 1.5.1
但是,每当我尝试从jruby运行黄瓜时,我都会收到错误:
% jruby -S cucumber
/usr/local/src/jruby-1.5.1/lib/ruby/site_rub/1.8/rubygems/custom_require.rb:31:in `require': no such file to load -- gherkin (LoadError)
Run Code Online (Sandbox Code Playgroud)
我认为这是b/c gherkin 2.1.5是原生扩展,jruby无法处理它:
% jgem install gherkin-2.1.5.gem
...
ERROR: Error installing gherkin-2.1.5.gem:
ERROR: Failed to build gem native extension.
Run Code Online (Sandbox Code Playgroud)
现在,我想尝试更新版本,但由于这是在受保护的Intranet上,导入新软件是PITA,需要一些时间.
有没有人有任何关于如何制作我工作的软件的建议?我错过了正确的配置设置或其他一些设置吗?
我知道可以在Google App Engine上运行jRuby/Java,但我是否也想使用Ruby on Rails作为该设置的前端,我能够吗?
谢谢,亚历克斯
我有一个java应用程序,我想为此使用rails迁移.
让这个工作的步骤是什么?
到目前为止我做到了这一点:
1. installed jruby
2. installed the following gems: rspec, cucumber, rake
Run Code Online (Sandbox Code Playgroud)
我是安装rails还是只安装activerecord?
有关存储Rakefile的文件夹结构的任何建议吗?我假设rake只能在rakefile所在的路径上工作?
我如何告诉它我的数据库连接信息?
我试图将一个简单的JRuby脚本打包到一个jar文件中.该脚本使用Rubeus :: Swing,并在使用JRuby解释器执行时正确运行.
require 'rubygems'
require 'rubeus'
class Example01
extend Rubeus::Swing
def show
JFrame.new("Rubeus Swing Example 01") do |frame|
frame.visible = true
end
end
end
Example01.new.show
Run Code Online (Sandbox Code Playgroud)
一旦我将脚本打包到JAR中warble,当我执行时:
java -jar jtest.jar
Run Code Online (Sandbox Code Playgroud)
... JFrame窗口显示并立即关闭.
没有任何错误的迹象.
有谁知道为什么会这样?
我正在尝试创建一个基本的ruby scraper,它将从html源代码中获取8个字母或更长的单词.然后将它们保存在与单词的第一个字符对应的文件中.好像很简单吧?
re = /\w{8,}/
cre = /[a-z0-9]/
a = b.html #This grabs the html from the browser
matchx = a.scan(re)
matchx.each do |xx|
word = xx.to_s.downcase.chomp
fchar = word[0].chr
if (fchar.match(cre)) #Not sure if I need this
@pcount += 1
fname = @WordsFName+fchar #@WordsFName is a prefix
tmpF = File.open(fname,"a+")
#Check for duplicates, if not write to file
exists = File.readlines(fname).any? { |li| li[word] }
if (!exists)
tmpF.write(word+"\n")
print word
@wcount += 1
end
end
end
Run Code Online (Sandbox Code Playgroud)
Ruby成功抓取所有单词,获取第一个字符,并打开所有必需的文件,但无法写入.此外,打印方法打印所有单词,包括重复,但检查任何?irb上的方法没有问题..
下面是我用来从RubyString转换为Java Char的代码..请你建议我更好的方式Jruby(自动处理这些类型错误或jruby中的一些代码转换)
ruby_string="Raj"
java.lang.String.new(col_value)
col_value=str_obj.charAt(0)
Run Code Online (Sandbox Code Playgroud) 在 JRuby 发行说明中,我经常发现特定版本的 JRuby 与哪个版本的 Ruby 兼容。它与哪个版本的 Java 运行时兼容?
例如,http://jruby.org/2016/05/27/jruby-9-1-2-0页面提到它与 Ruby 2.x 兼容,但没有提及 Java 运行时版本。
以下代码在 Windows 上的 JRuby 9.1.17.0 和 9.2.13.0 上运行:
at_exit { puts "at_exit function" }
ObjectSpace.define_finalizer("string", proc { puts "in finalizer" })
exit!
Run Code Online (Sandbox Code Playgroud)
产生这个:
at_exit function
in finalizer
Run Code Online (Sandbox Code Playgroud)
我的期望是不应该根据以下文档调用退出处理程序exit!:https :
//ruby-doc.org/core-2.7.1/Kernel.html#method-i-exit-21
这是一个错误exit!吗?
有没有其他方法可以实现不触发退出处理程序的预期结果,以便我可以保证从内部杀死我的系统?
jruby ×10
ruby ×4
java ×3
activerecord ×1
buffer ×1
classloader ×1
concurrency ×1
cucumber ×1
file ×1
gherkin ×1
jframe ×1
nokogiri ×1
swing ×1
version ×1