1

Oracle の ojdbc6.jar ライブラリ経由で JDBC を使用して Oracle データベースに接続する JRuby プロジェクトがあります。このコードは、Windows 7 で JRuby 1.6.6 を使用し、OS X Lion で JRuby 1.6.5.1 を使用して実行するとうまく機能します。ウグイスを使用してスタンドアロンの JAR ファイルを作成しようとしています。warble jar を実行すると、ojdbc6.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\bin\my_jruby_file.rb

require 'ruport'
require 'java'

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

JAR ファイルの生成後:

jruby -S warble jar

jar を実行すると、次のエラーが表示されます。

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/java/ojdbc6.jar が含まれていますが、内部ファイルまたはパス ポインターが正しく構成されていないようです。

任意の支援に感謝します。ありがとう!

4

1 に答える 1

2

$CLASSPATHruby コード内で設定したい場合があります。これに似たもの:

require 'java'
$CLASSPATH << "lib/java/ojdbc6.jar"

jruby on rails プロジェクトでいくつかの追加の jar を使用しており、デプロイでアクセスできるようにenvironment.rbするために、次のコードを使用しています。.jars.war

require 'java'
Dir.glob("lib/*.jar").each do |jar|
  $CLASSPATH << "#{Rails.root.to_s}/#{jar}"
end
于 2012-06-21T00:57:37.517 に答える