Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

commande java et pb de java.class.path

2 réponses
Avatar
yvon.thoravalNO-SPAM
j'utilise jruby et, pour lancer un sript.rb je fais :

java -classpath /Library/Java/Extensions/postgredriver.jar \
-jar /path/to/jruby.jar monscript.rb

seulement je n'arrive pas à faire une connection à la database
(par le postgredriver.jar)

si à l'intérieur de monscript.rb, je printe le classpath par :

print "java.class.path =",
JavaLang::System.getProperty("java.class.path"), "\n"

ca ne me retourne que /path/to/jruby.jar et pas du tout
/Library/Java/Extensions/postgredriver.jar

je ne pige pas où est mon erreur, je suppose qu'elle est dans la
commande...
--
yt

2 réponses

Avatar
Alexandre Touret
Yvon Thoraval wrote:
j'utilise jruby et, pour lancer un sript.rb je fais :

java -classpath /Library/Java/Extensions/postgredriver.jar
-jar /path/to/jruby.jar monscript.rb

seulement je n'arrive pas à faire une connection à la database
(par le postgredriver.jar)

si à l'intérieur de monscript.rb, je printe le classpath par :

print "java.class.path =",
JavaLang::System.getProperty("java.class.path"), "n"

ca ne me retourne que /path/to/jruby.jar et pas du tout
/Library/Java/Extensions/postgredriver.jar

je ne pige pas où est mon erreur, je suppose qu'elle est dans la
commande...
heuuu si t es sous **Nix ou Linux regarde les droits de ton JAR. Il faut

qu il soit executable

--
Alexandre

Avatar
yvon.thoravalNO-SPAM
Alexandre Touret wrote:

heuuu si t es sous **Nix ou Linux regarde les droits de ton JAR. Il faut
qu il soit executable


oui je suis sous **nix (macOS X Panther) mais bon j'ai bien fait chmod
a+x sur le jar concerné, ca ne change rien.

Qu'on se comprenne bien jruby se lance bien mon script jruby aussi mais
je n'arrive pas à établir une connection à la database postgres, le
message d'erreur est le suivant ;

in 'getConnection': Native Exception: 'class java.sql.SQLException';
Message: No suitable driver;

dans le script (zsh) de lancement je fais :

CLASS_PATH=/Library/Java/Extensions/pg74jdbc3.jar
echo 'CLASS_PATH : ' $CLASS_PATH
LD_LIBRARY_PATH=$JAVA_HOME/lib:/usr/local/pgsql/lib
echo 'LD_LIBRARY_PATH : ' $LD_LIBRARY_PATH

java -classpath $CLASS_PATH -Djava.library.path=$LD_LIBRARY_PATH -jar
/Users/yvonthor/bin/jruby-0.5.3/lib/jruby.jar connect2macave.rb


donc, avant le lancement de jruby.jar ce script zsh m'affiche :

CLASS_PATH : /Library/Java/Extensions/pg74jdbc3.jar
LD_LIBRARY_PATH : /Library/Java/Home/lib:/usr/local/pgsql/lib


ce qui est correct (je suis sûr de mon
/Library/Java/Extensions/pg74jdbc3.jar) parce que j'ai testé le driver
postgresql avec du java-swing.

mais comme jruby me dit ne pas trouver le driver, j'ai eu un doute sur
le classpath donc, une fois dans mon script jruby (connect2macave.rb) je
print le classpath et le java.library.path histoire de vérifier et là
OH, surprise , ca m'affiche :

java.class.path =/Users/yvonthor/bin/jruby-0.5.3/lib/jruby.jar
java.library.path =/Library/Java/Home/lib:/usr/local/pgsql/lib

donc je n'ai pas du tout de driver sql... d'où l'erreur au runtime.

mon script jruby (connect2macave.rb) :

require 'java'
module JavaLang
include_package "java.lang"
end
module JavaSQL
include_package "java.sql"
end

print "****************************************n"
print "****************************************n"
print "java.class.path =",
JavaLang::System.getProperty("java.class.path"), "n"
print "java.library.path =",
JavaLang::System.getProperty("java.library.path"), "n"
print "****************************************n"
print "****************************************n"

Java::JavaClass.for_name("org.postgresql.Driver")
db = JavaLang::String.new("jdbc:postgresql:macave")
usr = JavaLang::String.new("postgresql")
pass = JavaLang::String.new("topsecret")


string_class = Java::JavaClass.for_name("java.sql.DriverManager")
print "****************************************n"
print "java.sql.DriverManager ", string_class.methods.size, "n"
print "****************************************n"
string_class.methods.each { |m| print m, "n" }

pSQL = JavaSQL::DriverManager.getConnection(db, usr, pass)
query = pSQL.createStatement()
bouteilles = query.executeQuery("SELECT btl_desc, btl_vintage FROM
t_bottles_btl;")

bout = ""
while bouteilles.next()
bout += "Bouteille : " + bouteilles.getString("btl_desc") + "
millesime " + bouteilles.getString("btl_vintage") + "n"
end

print bout

bouteilles.close()
query.close()
pSQL.close()


--
yt