質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

1131閲覧

RubyファイルをJavaで動かしたい。

programingbegin

総合スコア12

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/07/07 16:17

編集2019/07/07 16:23

前提・実現したいこと

RubyプログラムをJava(Eclipse)で動かしたい。(JRuby)

発生している問題・エラーメッセージ

JavaからRubyスクリプトを実行する(JRuby)「https://yone-public.blogspot.com/2016/06/javarubyjruby.html」を参考にEclipseを動かしてみているのですが、ここではrubyファイルがputs"Hello world"などgemfileなど必要がなく簡潔なものでどのように動かすのか他のサイトを探してみましたが、どれもRubyでJavaプログラムを動かすといったものが多くありませんでした・・。プログラミング初心者でサイトに頼りきりで申し訳ないのですが、以下のRubyプログラムをJavaで動かす方法をご伝授願いたいです。

該当のソースコード

Ruby
ソースコード

require 'bundler/setup'
require 'nokogiri'
require 'csv'
require 'open-uri'
def setup_doc(url)
charset = 'nil'
html = open(url) { |f| f.read }
doc = Nokogiri::HTML.parse(html, nil, charset)
doc.search('br').each { |n| n.replace(" ") } #replace br with space
doc
end

def scrape(url)
doc = setup_doc(url)

csv = CSV.open("sample.csv",'w',{:col_sep =>",", :quote_char => ' \' ',:force_quotes => true}) doc.xpath('//table/tbody/tr').each do |row| tarray = [] # make array theader = [] ttest = [] doc.search('div').each { |n| n.replace("") } #delete <div> tag doc.search('/div').each { |n| n.replace("") } #delete </div> tag row.xpath('td').each do |cell|

(tarrayとtheaderを取得・ttestに結合して渡し、csvに出力する処理)

end csv.close # close csv file end url="https・・"

scrape(url)
gemfile

gem "csv"
gem "nokogiri"
source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

Java(サイトから拝借しました)
Java側
// Scriptエンジンを生成
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("jruby");
// RubyスクリプトのFileReaderを準備
FileReader f = new FileReader("test.rb");
// Rubyスクリプトを評価
engine.eval(f);
// 関数呼び出し
obj = ((Invocable)engine).invokeFunction("test");

Ruby側
def test
puts "Hello World"
end

試したこと

rubyだけで実行は無事できていまして、tableの表をcsv出力するというものです。これをrubyではなくjavaで動かしてほしいと言われ、サイトをいくつか探したのですがめぼしいサイトが(私の力ではかもしれませんが・・)見つかりませんでした。
また、eclipseは上記サイトではmarsを使っていますが、使い慣れたeclipse preiadesを使っています。こちらも駄目でしたらご指導ご鞭撻のほどよろしくお願いします。(初投稿になりまして不足情報などありましたら申し訳ございません)。

補足情報(FW/ツールのバージョンなど)

ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
Windows 64bit版 pleiades 4.6.3
jruby-complete 9.2.7.0.jar

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/07/07 16:31

> これをrubyではなくjavaで動かしてほしい と言われたら、普通は「RubyからJavaに書き直して」という意味じゃないでしょうか。
programingbegin

2019/07/07 17:34 編集

こんばんは、返信ありがとうございます。やはりそうですよね・・。ここまでするのに時間がかかったものですから数時間後までにやってほしいと言われて、変更できるものなのかな?と思ってしまい質問してしまいました。javaで書き直してみたいと思います、ご意見ありがとうございました。
m.ts10806

2019/07/07 20:48 編集

質問の件とは直接関係ないですし細かいですが >eclipseは上記サイトではmarsを使っていますが、使い慣れたeclipse preiades Pleiades はEclipseの開発パッケージ(日本語化など)の総称であって、MarsはEclipse本体のバージョンの通称なので並列には出来ません(つまりMarsだけの表記だと本体だけかPleiadesパッケージ版かは分からない)。Pleiades だけではどのバージョンか分からないので表記は正確にされたほうが良いですね。 Marsは4.5なので4.6.3だと通称Neonですね。
退会済みユーザー

退会済みユーザー

2019/07/08 00:09

jrubyが動作保証しているバージョンの組み合わせですか? java,ruby,jruby
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問