java从小做大的过程中留下诸多可以重复使用jar包,尤其在企业应用中。各个公司提供的开发包都是以dll或者jar包。要想使得ruby开发走入企业,走入高端,必须有兼容性。jruby调用jar包就像java调用jar一样,但是jruby的特点,这里不再赘述。我们还是看看原始的cruby如何调用jar。
实际上ibm网站上有一篇文章,似乎也是唯一的一篇,说到这个。我这里实际上就是基于这篇文章进行实际操作,并处理诸多问题后的一个学习笔记。
jar包是java的一个工具jar打成的一个zip包,除了打包,还可以部署软件。
jar包就是将class打成一个包。
整体思路:
1.安装RJB:gem install rjb。在ruby代码中,require 'rjb',可以在irb环境中做简单测试。以下也是可以这样做。
2.然后配置jar环境,同时需要配置java环境,通过 java -version,可以检测是否正常
Rjb::load(CLASSPATH = '.:/home/saq/app/down/javatar-2.5/jars/tar.jar', jvmargs=[])
注意这里的CLASSPATH是大写,也就是与系统中定义的classpath是一致的。(按照ibm的一篇文章,在这里遇到麻烦。)
3.可以使用这个jar包。
实际上jar包就是一个有目录结构的zip包。如何使用,打开jar包就可以看到。
比如这个javatar-2.5
class-com-ice-tar-*
这里面有许多class。
我们选中一个:TarArchive,使用下面语句
tararchive = Rjb::import('com.ice.tar.TarArchive')
看到如下结果:
=> #<Rjb::Com_ice_tar_TarArchive:0x2aaaae884108>
呵呵,对象创建成功,与前面使用string创建对象类似。
完整的案例解释
# 将rjb模块注入,有时候需要同时注入rubygems
require 'rubygems'
require 'rjb'
# 注入 jar包,同时配置虚拟机环境,一般缺省,注意这里的classpath,与/etc/profile中的环境变量classpath相同。一般配置为大写CLASSPATH,表示为常量。最好在现有环境测试echo $CLASSPATH,如果有值,则是正确的。下面的写法的自己的理解:.点代表当前的值,:表示并集,与后面的jar包一并是classpath中的内容。所有这个jar包的目录结构务必准确。
Rjb::load(CLASSPATH = '.:/home/saq/app/down/javatar-2.5/jars/tar.jar', jvmargs=[])
#使用jar包中的某个类,创建ruby类。参照前面的描述。
tararchive = Rjb::import('com.ice.tar.TarArchive')
#使用java的非jar包,也就是java的原始包中的类,创建对象。文件流类,ruby类。
fileinputstream = Rjb::import('java.io.FileInputStream')
#创建file类,ruby类
file = Rjb::import('java.io.File')
#利用三个ruby类创建带有参数的实例
file_instance = file.new_with_sig('Ljava.lang.String;','.')
fileinputstream_instance = fileinputstream.new_with_sig('Ljava.lang.String;','test.tar')#这里将绝对路径写准确,就不会出错。
tararchive_instance = tararchive.new_with_sig('Ljava.io.InputStream;',fileinputstream_instance)
p 'Extracting file.....'
#调用java类定义的方法。通过_invoke,或者直接调用。
tararchive_instance.extractContents(file_instance)
p 'Done...'
假设将上述文件命名为tar.rb
运行:ruby tar.rb,看到
"Extracting file....."
"Done..."
即执行成功
分享到:
相关推荐
在Rails应用的初始化文件或者特定的Ruby脚本中,你可以使用RJB的API来装载JAR文件并调用其中的类和方法。 ```ruby require 'rjb' # 加载Java库 Rjb::load('path/to/your/library.jar', ['-classpath']) # 访问...
这通常通过构建工具如Maven或Gradle来完成,它们可以自动下载并管理所需的jar包,确保项目的正确运行。 5. **SSI与动态语言比较**:虽然SSI提供了一种轻量级的动态内容生成方式,但它功能相对有限,对于复杂的应用...
Appium自动化jar包是用于移动应用自动化测试的重要工具,它基于WebDriver协议,允许开发者使用多种编程语言(如Java、Python、Ruby等)进行自动化测试。在这个压缩包中,包含两个核心的Java库文件:`java-client-...
在Java环境下,我们需要一些特定的库文件,即jar包,来与Appium进行交互。本资源提供的"appium所需jar包.zip"就是为了在Java开发环境中(如Eclipse或IntelliJ IDEA)搭建Appium测试环境所需的。 首先,为了在Java...
Unirest 是一个轻量级的 HTTP 请求库,涵盖 Node、Ruby、Java、PHP、Python、Objective-C、.NET 等多种语言。可发起 GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 请求
用于打包ruby代码生成EXE程序,最新的GEM包ocra-1.31.gem
通过qtbindings,Ruby程序员可以直接调用QT的类和方法,创建复杂的窗口应用、控件、布局和信号与槽机制,而无需离开熟悉的Ruby环境。 这个项目的核心在于其绑定技术,它将C++的QT库转换为Ruby可以理解和操作的对象...
首先,`logstash数据从mysql导入es所需mysql的jar包`指的是Logstash需要连接到MySQL数据库,这就需要用到Java Database Connectivity (JDBC) 驱动。MySQL的JDBC驱动是一个Java类库,允许Java应用程序与MySQL数据库...
Selenium 的 jar 包包含了所有必要的类和库,使得开发者能够在他们的 Java 项目中直接调用 Selenium 提供的 API 来控制浏览器,模拟用户操作。 在 Selenium 2.44 到 2.53 的版本区间内,有一些重要的更新和改进: ...
Ruby-PyCall是一个非常有用的库,它允许Ruby程序员无缝地调用Python的函数和模块,极大地扩展了Ruby的生态系统。这个库使得两个语言之间的交互变得简单而高效,特别是在需要利用Python的强大科学计算或数据处理能力...
ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件ruby打包文件
一个将ruby脚本打包成二进制可执行文件的工具,包含源码和一个编译完成的二进制文件!支持跨平台编译,在windows、macOS、linux上均可以成功编译运行!包里的二进制文件是在ubuntu16.04中编译成功的版本!
标题中的“ice最简单实现 ruby调用ice接口”是指在Ruby编程语言中使用ICE(Internet Communication Engine)框架来实现远程方法调用(RPC)。ICE是由ZeroC开发的一种跨平台、高性能的中间件,它允许不同语言的应用...
在Java环境下使用Selenium时,我们需要引入相应的jar包以支持其功能。"selenium-server-cloudy.jar" 文件是Selenium的一部分,主要用于搭建服务器,特别是与云测试平台集成。 1. Selenium简介: Selenium 支持多种...
您可以将任意Python模块导入Ruby模块,通过从Ruby到Python的自动类型转换来调用Python函数。 支持的Ruby版本pycall.rb支持Ruby 2.3或更高版本。 支持的Python版本pycall.rb支持Python 2.7或更高版本。 请注意,在...
- **配置环境变量**:将Selenium RC的jar包路径添加到系统的`PATH`环境变量中,以便于命令行调用。 3. **启动Selenium RC**:在命令行中运行`java -jar selenium-server.jar`启动Selenium RC服务器。 4. **编写...
ruby-git, ruby/Git是一个 ruby 库,可以通过将系统调用包装到Git二进制文件来创建读取和操作Git存储库 用于 ruby的 Git库在 ruby 中使用Git的库。主页项目源代码的Git public 位于:...
Rubygems-2.7.7.tgz则包含了Ruby的包管理器,用于安装和管理Ruby的库和应用程序。 3. **Zlib**:Zlib是一个广泛使用的压缩库,常用于数据压缩和解压缩。zlib-1.2.11.tar.gz是Zlib的源代码,其在许多软件中作为依赖...
【Selenium 全部 JAR】是一套...通过结合实际项目需求,正确地使用和配置这些 JAR 文件,能够极大地提升测试的效率和效果。对于想要深入了解 Selenium 或者开发自动化测试框架的人来说,这个压缩包是必不可少的资源。