2016-12-11 1 views
0

Lorsque j'essaie d'inclure le pilote Oracle JDBC (ojdbc7.jar) dans mon projet JRuby Gradle, je reçois toujours un "ne peut pas charger la classe Java oracle.jdbc.OracleDriver" lors de l'exécution. Voici mon build.gradle de base:Comment éviter "impossible de charger la classe Java oracle.jdbc.OracleDriver" dans un projet JRuby Gradle?

buildscript { 
    repositories { jcenter() } 

    dependencies { 
     classpath 'com.github.jengelman.gradle.plugins:shadow:[1.2.2,2.0)' 

     classpath 'com.github.jruby-gradle:jruby-gradle-plugin:%%VERSION%%' 
     classpath 'com.github.jruby-gradle:jruby-gradle-jar-plugin:1.3.3' 
    } 
} 

apply plugin: "com.github.jruby-gradle.jar" 

repositories { jcenter() } 

dependencies { 
    jrubyJar "rubygems:colorize:0.7.7+" 
    jrubyJar 'org.slf4j:slf4j-simple:1.7.12' 
} 

jrubyJar { 
    initScript "${projectDir}/entrypoint.rb" 
} 

Et voici mon entrypoint.rb:

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

puts "Hello world" 

sortie des étapes de construction + run:

frank$ ./gradlew jrubyJar 
:prepareJRubyJar UP-TO-DATE 
:jrubyJar UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 2.027 secs 

frank$ java -jar build/libs/plsql-unit-tester-jruby.jar 
NameError: cannot load Java class oracle.jdbc.OracleDriver 
    ... 

suivant les conseils How to use oracle jdbc driver in gradle project, j'ai essayé ajoutant ceci à mon build.gradle:

dependencies { 
    compile files('lib/ojdbc7.jar') 
} 

Mais cela provoque une erreur au moment de la compilation:

Could not find method compile() for arguments [file collection] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 

J'ai ensuite essayé de l'ajouter en tant que dépendance d'exécution comme suggéré dans How to add OJDBC6.jar in build.gradle file?:

dependencies { 
    runtime files('lib/odjbc7.jar') 
} 

Mais cela soulève encore une erreur de compilation:

Could not find method runtime() for arguments [file collection] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 

Donc je suis bloqué - comment puis-je ajouter correctement odjbc7.jar (ou tout pot externe) en tant que dépendance dans mon projet JRuby Gradle?

Répondre

1

Une solution de contournement pour le problème consiste à installer le pilote Oracle JDBC dans le référentiel Maven local et à ajouter le mavenLocal() en tant que référentiel et le fichier jar du pilote en tant que dépendance supplémentaire.

Le pilote peut être installé comme ceci:

mvn install:install-file -Dfile=ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.2 -Dpackaging=jar 

La build.gradle finale ressemble à ceci:

buildscript { 
    repositories { jcenter() } 

    dependencies { 
     classpath 'com.github.jruby-gradle:jruby-gradle-plugin:1.3.3' 
     classpath 'com.github.jruby-gradle:jruby-gradle-jar-plugin:1.3.3'   
    } 
} 

apply plugin: "com.github.jruby-gradle.jar" 

repositories { 
    mavenLocal() 
    jcenter() 
} 

dependencies { 
    jrubyJar "rubygems:colorize:0.7.7+" 
    jrubyJar 'org.slf4j:slf4j-simple:1.7.12' 
    jrubyJar 'com.oracle:ojdbc7:12.1.0.2' 
} 

jrubyJar { 
    initScript "${projectDir}/entrypoint.rb" 
} 
+0

Merci beaucoup (il est dommage que j'ai besoin Maven pour un projet Gradle, bien que) –