Compiled Ruby classes cannot resolve their location inside a Jar file
---------------------------------------------------------------------
Key: JRUBY-3014
URL: http://jira.codehaus.org/browse/JRUBY-3014
Project: JRuby
Issue Type: Bug
Components: Compiler
Affects Versions: JRuby 1.1.4
Reporter: David Koontz
Priority: Critical
Here's the breakdown:
Compiled and uncompiled Ruby classes from the command line work fine
Compiled and uncompiled Ruby classes in the root of a jar do not properly
resolve File.expand_path(File.dirname(__FILE__))
Compiled Ruby classes in a sub-directory of a jar do not properly resolve
File.expand_path(File.dirname(__FILE__))
Uncompiled Ruby classes in a sub-directory of a jar *DO* properly resolve
File.expand_path(File.dirname(__FILE__))
#=== file_test.rb ===
puts "__FILE__: #{__FILE__}"
puts "File.dirname(__FILE__): #{File.dirname(__FILE__)}"
puts "File.expand_path(File.dirname(__FILE__)):
#{File.expand_path(File.dirname(__FILE__))}"
#=== bootstrap1.rb === (used to test uncompiled Ruby files in a jar)
require 'file_test'
#=== bootstrap2.rb === (used to test uncompiled Ruby files in a jar)
require 'src/file_test'
# GIVES CORRECT OUTPUT
#=== Running the file_test.rb file unmodified using MRI and JRuby ===
ruby file_test.rb
__FILE__: file_test.rb
File.dirname(__FILE__): .
File.expand_path(File.dirname(__FILE__)):
/Users/david/dev/projects/general/jruby_test
jruby file_test.rb
__FILE__: file_test.rb
File.dirname(__FILE__): .
File.expand_path(File.dirname(__FILE__)):
/Users/david/dev/projects/general/jruby_test
# GIVES CORRECT OUTPUT
# === Compile the file_test.rb file (jrubyc file_test.rb) ===
java -cp ~/dev/libs/jruby/lib/jruby.jar:. file_test
__FILE__: file_test.rb
File.dirname(__FILE__): .
File.expand_path(File.dirname(__FILE__)):
/Users/david/dev/projects/general/jruby_test
# GIVES INCORRECT OUTPUT
# === Jarring the file_test.rb (jar -cvf file_test.jar file_test.rb
bootstrap1.class) and placing jar file in /jar sub-directory ===
# Adding in compiled bootstrap1 class so java has something to launch
java -cp ~/dev/libs/jruby/lib/jruby-complete.jar:file_test.jar bootstrap1 #<--
no output, internally an exception?
# GIVES INCORRECT OUTPUT
# === Jarring the file_test.class (jar -cvf file_test.jar file_test.class)
(also placing in /jar sub-directory) ===
# Moved file_test.jar into /jar subdirectory to prevent accidentally pulling in
.class file
java -cp ~/dev/libs/jruby/lib/jruby-complete.jar:file_test.jar file_test
__FILE__: file_test.rb
File.dirname(__FILE__): .
File.expand_path(File.dirname(__FILE__)):
/Users/david/dev/projects/general/jruby_test/jar #<-- should have
/file_test.jar! on the end
GIVES CORRECT OUTPUT
# === Uncompiled Ruby file in /src directory in jar file ===
# Use bootstrap2 file to require file in 'src/test_file'
java -cp ~/dev/libs/jruby/lib/jruby-complete.jar:file_test.jar bootstrap2
__FILE__:
file:/Users/david/dev/projects/general/jruby_test/jar/file_test.jar!/src/file_test.rb
File.dirname(__FILE__):
file:/Users/david/dev/projects/general/jruby_test/jar/file_test.jar!/src
File.expand_path(File.dirname(__FILE__)):
file:/Users/david/dev/projects/general/jruby_test/jar/file_test.jar!/src #<--
We get the jar file and the sub-dir, yay!
GIVES INCORRECT OUTPUT
# === Compiled Ruby file in /src directory in jar file ===
# As above but with compiled Ruby file, same bootstrap2 file
java -cp ~/dev/libs/jruby/lib/jruby-complete.jar:file_test.jar bootstrap2
__FILE__: file_test.rb
File.dirname(__FILE__): .
File.expand_path(File.dirname(__FILE__)):
/Users/david/dev/projects/general/jruby_test/jar #<-- missing
/file_test.jar!/src
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email