# Using Rubygems to Package Java Jarfiles

**URL:** <https://www.ruby-forum.com/t/using-rubygems-to-package-java-jarfiles/68422>\
**Category:** Ruby\
**Created:** [September 12, 2006, 4:37pm UTC](https://www.ruby-forum.com/t/using-rubygems-to-package-java-jarfiles/68422 "2006-09-12T16:37:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![usrlocal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/aeb1de/32.png) [@usrlocal](https://www.ruby-forum.com/u/usrlocal)\
**Post date:** [September 12, 2006, 4:37pm UTC](https://www.ruby-forum.com/t/using-rubygems-to-package-java-jarfiles/68422/1 "2006-09-12T16:37:12Z")

</div>

Ruby Java Bridge (RJB) ([http://rjb.rubyforge.org/](http://rjb.rubyforge.org/)) a good way to use  
Java classes and maintain the abiltity to work with both C extensions  
and develop Rails applications.

If you could package Java jarfiles in a Rubygem, that would be the  
ultimate in convenience. A user could simply use the “gem install”  
command, which would automatically install RJB if needed, the jarfile,  
and any necessary Ruby glue code. The user could then have access to the  
Java library.

The whole process would be essentially the same as working with any  
other Rubygem. Any library that depends on this java-ruby hybrid can use  
it like any other Rubygem, with all of the advantages.

I’ve already built a Gem that installs a jarfile. Here’s the problem:  
with RJB, the jarfiles you use can be specified with:

ENV[‘CLASSPATH’] = ‘my\_jarfile.jar’

My question is: how do I locate my\_jarfile.jar?

One possibility seems to be Gem.dir, which gives the top-level directory  
for installed Gems.

But I need to get the path to my Gem’s directory. One way I came up with  
was to use (assuming I’ve got foo-0.1.0):

gem\_path = Gem.dir + ‘/gems/foo-0.1.0/’  
ENV[‘CLASSPATH’] = gem\_path + ‘my\_jarfile.jar’

I’ve used this approach and it works. But it seems like there must be a  
more elegant way to get to a particluar Gem’s installation directory.  
Also, is there a better way to do what I’m trying to do?

thanks,  
Rich

---

<div class="post-metadata">

**Author:** ![usrlocal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/aeb1de/32.png) [@usrlocal](https://www.ruby-forum.com/u/usrlocal)\
**Post date:** [September 12, 2006, 6:23pm UTC](https://www.ruby-forum.com/t/using-rubygems-to-package-java-jarfiles/68422/2 "2006-09-12T18:23:25Z")

</div>

Rich Apodaca wrote:

> The whole process would be essentially the same as working with any  
> One possibility seems to be Gem.dir, which gives the top-level directory  
> Also, is there a better way to do what I’m trying to do?
> 
> thanks,  
> Rich

Hi Rich,

We’re working on an approach like this for packaging Java extensions to  
Ruby systems. If we get what we want, you’ll be able to (from JRuby) do  
gem install mongrel, choose java-version (instead of linux or mswin32)  
from the list, and the Java extension will be automatically installed.  
This requires the JRuby runtime to work, of course.

–  
Ola B. ([http://ola-bini.blogspot.com](http://ola-bini.blogspot.com))  
JvYAML, RbYAML, JRuby and Jatha contributor  
System Developer, Karolinska Institutet ([http://www.ki.se](http://www.ki.se))  
OLogix Consulting ([http://www.ologix.com](http://www.ologix.com))

“Yields falsehood when quined” yields falsehood when quined.

---

<div class="post-metadata">

**Author:** ![usrlocal](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/aeb1de/32.png) [@usrlocal](https://www.ruby-forum.com/u/usrlocal)\
**Post date:** [September 20, 2006, 6:03am UTC](https://www.ruby-forum.com/t/using-rubygems-to-package-java-jarfiles/68422/3 "2006-09-20T06:03:02Z")

</div>

Ola B. wrote:

> Rich Apodaca wrote:
> 
> > The whole process would be essentially the same as working with any  
> > One possibility seems to be Gem.dir, which gives the top-level directory  
> > Also, is there a better way to do what I’m trying to do?
> > 
> > thanks,  
> > Rich
> 
> Hi Rich,
> 
> We’re working on an approach like this for packaging Java extensions to  
> Ruby systems. If we get what we want, you’ll be able to (from JRuby) do  
> gem install mongrel, choose java-version (instead of linux or mswin32)  
> from the list, and the Java extension will be automatically installed.  
> This requires the JRuby runtime to work, of course.

Thanks for the info, Ola. I’ve written an article describing another  
solution that works with the C Ruby implementation (letting you use C  
extensions _and_ Java at the same time):

[http://depth-first.com/articles/2006/09/14/cdk-the-ruby-way](http://depth-first.com/articles/2006/09/14/cdk-the-ruby-way)

It might also work with JRuby.

Best,  
Rich
