2012-06-20 1 views
1

Oracle의 ojdbc6.jar 라이브러리를 통해 JDBC를 사용하여 Oracle 데이터베이스에 연결하는 JRuby 프로젝트가 있습니다. 이 코드는 Windows 7에서 JRuby 1.6.6을 사용하고 OS X Lion에서 JRuby 1.6.5.1을 사용하여 실행하면 잘 작동합니다. warbler를 사용하여 독립 실행 형 JAR 파일을 만들려고합니다. warble jar를 실행 한 후에는 ojdbc6.jar가 포함되지만 어떤 이유로로드/액세스하지 않습니다. 내부 클래스 경로가 올바르지 않거나 제대로 설정하지 못하는 것 같습니다.warbler에 의해 생성 된 JAR은 포함 된 내부 JAR 라이브러리에 액세스 할 수 없습니다.

다음과 같은 디렉토리 구조가 존재합니다.

C:\my_jruby_project\bin\my_jruby_file.rb 
C:\my_jruby_project\lib\java\ojdbc6.jar 
C:\my_jruby_project\Gemfile 

C : \ my_jruby_project \ Gemfile :

source :rubygems 
gem 'activerecord', '>= 3.2.3' 
gem 'activerecord-jdbc-adapter', '>= 1.2.2' 
gem 'ruport', '>= 1.6.3' 

C : \ my_jruby_project 빈 \의 my_jruby_file.rb \

require 'ruport' 
require 'java' 

java_import 'oracle.jdbc.OracleDriver' 
java_import 'java.sql.DriverManager' 
.... 

JAR 파일 생성 후 :

jruby -S warble jar 

나는 항아리를 실행하고 followin을 얻는다. g 오류 :

C:\my_jruby_project>java -jar my_jruby_project.jar 
NameError: cannot load Java class oracle.jdbc.OracleDriver 
     for_name at org/jruby/javasupport/JavaClass.java:1205 
    get_proxy_class at org/jruby/javasupport/JavaUtilities.java:34 
     java_import at file:/C:/Users/DAVIDH~1.OPE/AppData/Local/Temp/jruby8647327738550400677extract/ 
jruby-core-1.6.7.jar!/builtin/javasupport/core_ext/object.rb:46 
      (root) at file:/C:/my_jruby_project/my_jruby_project.jar!/my_jruby_project/bin/my_jruby_file.rb:4 
      load at org/jruby/RubyKernel.java:1058 
      (root) at file:/C:/my_jruby_project/my_jruby_project.jar!/my_jruby_project/bin/my_jruby_file.rb:1 
      require at org/jruby/RubyKernel.java:1033 
      require at file:/C:/my_jruby_project/my_jruby_project.jar!/META-INF/main.rb:36 
      (root) at <script>:3 

C:\my_jruby_project> 

생성 된 JAR는 lib 디렉토리/자바/ojdbc6.jar이 포함되어 있지만 내부 파일 또는 경로 포인터가 제대로 구성되지 않은 것 같다.

감사합니다. 감사!

답변

3

루비 코드 안에 $CLASSPATH을 설정해야 할 수 있습니다. 이와 유사한 뭔가 :

require 'java' 
Dir.glob("lib/*.jar").each do |jar| 
    $CLASSPATH << "#{Rails.root.to_s}/#{jar}" 
end 
:
require 'java' 
$CLASSPATH << "lib/java/ojdbc6.jar" 

내가 내 .war 배포에 액세스 할 수 있도록 .jars 위해서는 레일 프로젝트 내 JRuby를 일부 추가 항아리를 사용하여 내 environment.rb에 다음 코드를
+0

굉장! 그랬어. 고마워요! – hooinator

+0

감사합니다. 매우 유용합니다. – gfroese