最近要在ror项目中引进一个java接口方法。一似乎接触了rjb。
事前准备
一:下载rjb相关版本gem包。
gem install rjb
确认安装成功
为了确认 RJB 安装成功,首先调用 Ruby 的交互式控制台 irb:
[root@san]# irb
然后输入 require 'rjb':
irb(main):001:0> require 'rjb'
=> true
irb(main):002:0>exit
二:安装jdk,配置jdk环境变量。
JAVA方法打包
一:把需要调用的类方法打成jar包,类方法中本身有调用jar包的,要把相关jar解压出来放到根目录下一起打包包含进来。
二:将打好的jar包放到ror项目的lib目录下待调用。
ror相关调用:
一:在ror的envieroment.rb文件中配置以下变量
ENV['JAVA_HOME'] = "d:/jdk1.6.0_10"
ENV['LD_LIBRARY_PATH'] = "d:/jdk1.6.0_10/jre/lib/i386:d:/jdk1.6.0_10/jre/lib/i386/client"
二:ruby引用调用jar包中的java类方法
module Rjbtest
require 'rubygems'
require 'rjb'
def nmsrjb( host, port, ip, arg0, arg1, arg2, arg3)
Rjb::load(classpath = "#{RAILS_ROOT}/lib/testjrb.jar", jvmargs=[])
test = Rjb::import("EventClientDemo")
nmstest=test.new
nmstest.sendevents( host, port, ip, arg0, arg1, arg2, arg3)
end
end
需要注意的是,当使用的是安腾服务器的时候包一个rjbcore.rb文件中报错。多次验证是里边的一个.so文件不兼容,不知道有没有相关的gem包支持。最后针对安腾服务器单独写了java程序独立跑任务。
分享到:
相关推荐
本教程的目标在于指导读者如何配置和使用RJB,从而在Rails应用中集成和调用Java代码。由于Rails框架本身的功能丰富,本教程并未深入探讨其细节,而是专注于RJB的使用方法。如果你对Rails不熟悉,建议查阅相关的官方...
Rjb是使用Java本机接口的Ruby-Java桥。 Rjb上的演示文稿。 英文简短。 日语中的一些,但是每个人的源代码都很清晰。如何安装您需要安装Java2 sdk,并设置JAVA_HOME环境变量(OS X除外)。我假设OS X的JAVA_HOME是...
当按钮被点击时,调用`start()`方法启动线程。 5. **线程的run方法**: ```java public void run() { for (int i = 0; i ; i++) { jpb.setValue(i); jpb.setStringPainted(true); String per = (int) (jpb....
通过本文的介绍,我们可以看到Flex与数据库交互的基本流程:首先在Java端定义数据模型和数据访问逻辑,然后在Flex端通过`RemoteObject`组件调用Java服务端的方法来获取数据并展示在界面上。这种方式不仅简化了前后端...
在Android应用开发中,"调用系统相机并保存原始图片"是一个常见的需求。这涉及到与设备硬件的交互,用户界面的构建,以及照片处理的流程。以下是对这一知识点的详细说明: 1. **启动相机应用**: 要调用系统相机,...
在示例代码中,`FlexWithJava.mxml`文件中定义了一个`RemoteObject`实例,通过设置`destination`属性指向`UserDao`类,Flex就能够调用Java层的方法。当Java层的方法执行完毕,返回结果时,`onResult`事件处理器会被...
4. **处理代理**:如果需要通过代理服务器访问网页,可以调用`initProxy`方法设置系统属性,提供代理的主机名、端口、用户名和密码。 5. **HttpURLConnection**:对于HTTP请求,可以使用`HttpURLConnection`进行更...
通过获取系统服务`CLIPBOARD_SERVICE`,我们可以创建一个`ClipboardManager`实例,然后使用`setText`方法进行复制,`getText`方法进行粘贴。 ```java ClipboardManager clip = (ClipboardManager) ...
2. 设置`android:singleLine="true"`或在Java代码中调用`setSingleLine(true)`。 3. 通过`setEllipsize(TruncateAt.MARQUEE)`启用跑马灯效果。 4. 如果需要,手动调用`requestFocus()`以获得焦点。 5. 使用`...
接着,通过`getSpans`找到所有URLSpan对象,并调用`setLinkClickable`方法为每个URL设置ClickSpan。 ```java private CharSequence getClickableHtml(String html) { Spanned spannedHtml = Html.fromHtml(html); ...
当遇到`<img>`标签时,ImageGetter的`getDrawable(String src)`方法会被调用,我们可以在这个方法中加载并返回对应的Drawable对象。以下是一个基本的实现: ```java mTVText.setText(Html.fromHtml(...
这里`R.id.icon`是ImageView的ID,`R.drawable.icon`是设置的图片资源,`visible()`用于显示ImageView,`clicked()`用于添加点击事件,第二个参数是方法名,该方法需是public修饰的。 ### 对于Fragment的支持 在...
```java public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.outline, null); holder = new ...
通过`read()`方法读取整个文件内容到变量`db`,接着调用字符串的`replace()`方法,将空格(' ')替换为换行符('\n'),最后关闭文件。 `replace()`函数是Python字符串的一个内置方法,它能够查找字符串中的指定...
在`onCreate`方法中,首先调用`setContentView`加载布局,然后通过`findViewById`获取到`ProgressBar`和`WebView`的引用: ```java final ProgressBar bar = (ProgressBar)findViewById(R.id.myProgressBar); final...
- 修改系统环境变量`PATH`,在其原有值的基础上追加`%JAVA_HOME%\bin`,确保可以直接调用Java命令。 - **验证安装**: - 打开命令行工具,输入`java -version`,如果能正确显示JDK版本信息,则表示安装成功。 ##...
最后,确保对话框可取消,并调用`show()`方法来显示它: ```java prodialog.setCancelable(true); prodialog.show(); ``` 在布局文件中,我们通常不需要特别处理,因为`ProgressDialog`有自己的默认布局。但如果你...