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


Reply via email to