zaadjis created JRUBY-6348: ------------------------------ Summary: require doesn't load .class when original .rb eval-ed Key: JRUBY-6348 URL: https://jira.codehaus.org/browse/JRUBY-6348 Project: JRuby Issue Type: Bug Components: Core Classes/Modules, Rails WAR Deployment Affects Versions: JRuby 1.6.5 Environment: jruby 1.6.5.1 (ruby-1.8.7-p330) (2011-12-27 1bf37c2) (OpenJDK 64-Bit Server VM 1.6.0_23) [linux-amd64-java] Reporter: zaadjis
*Steps to reproduce:* {code:none} cd /tmp rvm use jruby-1.6.5.1 echo 'puts "hello world" > foo.rb' jrubyc foo.rb # creates foo.class echo 'require __FILE__.sub(/\.rb$/, ".class")' > foo.rb echo 'eval(File.read(f = File.expand_path("../foo.rb", __FILE__)), binding, f)' > bug.rb jruby -J-Djruby.debug.loadService=true -d bug.rb {code} *Result:* {code:none} LoadService: trying builtinLib: enumerator.class ..snip.. LoadService: found builtinLib: enumerator.jar LoadService: trying builtinLib: /tmp/foo.class.class LoadService: trying builtinLib: /tmp/foo.class.rb LoadService: trying resourceAsIs: /tmp/foo.class.class LoadService: trying resourceAsIs: /tmp/foo.class.rb LoadService: trying builtinLib: /tmp/foo.class.jar LoadService: trying builtinLib: /tmp/foo.class.so LoadService: trying builtinLib: /tmp/foo.class.bundle LoadService: trying builtinLib: /tmp/foo.class.dll LoadService: trying resourceAsIs: /tmp/foo.class.jar LoadService: trying resourceAsIs: /tmp/foo.class.so LoadService: trying resourceAsIs: /tmp/foo.class.bundle LoadService: trying resourceAsIs: /tmp/foo.class.dll LoadService: trying fileInClasspath: .//tmp/foo.class.class LoadService: trying fileInClasspath: .//tmp/foo.class.rb LoadService: trying fileInClasspath: .//tmp/foo.class.jar LoadService: trying fileInClasspath: .//tmp/foo.class.so LoadService: trying fileInClasspath: .//tmp/foo.class.bundle LoadService: trying fileInClasspath: .//tmp/foo.class.dll java.lang.ClassNotFoundException: tmp.Foo.classService at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at org.jruby.util.JRubyClassLoader.findClass(JRubyClassLoader.java:86) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.jruby.javasupport.JavaSupport.loadJavaClass(JavaSupport.java:136) at org.jruby.runtime.load.LoadService$ExtensionSearcher.trySearch(LoadService.java:619) at org.jruby.runtime.load.LoadService.findFileForLoad(LoadService.java:285) at org.jruby.runtime.load.LoadService.smartLoad(LoadService.java:332) at org.jruby.runtime.load.LoadService.require(LoadService.java:381) at org.jruby.runtime.load.LoadService.lockAndRequire(LoadService.java:306) at org.jruby.RubyKernel.requireCommon(RubyKernel.java:1055) at org.jruby.RubyKernel.require(RubyKernel.java:1038) at org.jruby.RubyKernel$s$1$0$require.call(RubyKernel$s$1$0$require.gen:65535) at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:319) at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312) at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169) at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36) at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104) at org.jruby.ast.RootNode.interpret(RootNode.java:129) at org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:96) at org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:161) at org.jruby.RubyKernel.evalCommon(RubyKernel.java:1135) at org.jruby.RubyKernel.eval(RubyKernel.java:1088) at org.jruby.RubyKernel$s$0$3$eval.call(RubyKernel$s$0$3$eval.gen:65535) at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:227) at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:223) at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:352) at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:237) at bug.__file__(bug.rb:1) at bug.load(bug.rb) at org.jruby.Ruby.runScript(Ruby.java:695) at org.jruby.Ruby.runScript(Ruby.java:688) at org.jruby.Ruby.runNormally(Ruby.java:595) at org.jruby.Ruby.runFromMain(Ruby.java:444) at org.jruby.Main.doRunFromMain(Main.java:321) at org.jruby.Main.internalRun(Main.java:241) at org.jruby.Main.run(Main.java:207) at org.jruby.Main.run(Main.java:191) at org.jruby.Main.main(Main.java:171) LoadError: no such file to load -- /tmp/foo.class require at org/jruby/RubyKernel.java:1038 at /tmp/foo.rb:1 eval at org/jruby/RubyKernel.java:1088 (root) at bug.rb:1 {code} *Expected result:* LoadError exception should not be raised, {{foo.class}} should be loaded/required. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.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