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

java.lang.NoClassDefFoundError je sèche...

2 réponses
Avatar
yvon.thoravalNO-SPAM
Sans doute un truc bête auquel je ne pense pas, je suis dans un rep
"myPackages" dans lequel il y a :
bin -> les fichiers zsh de lancement
classes -> les résultats des compils
lib -> le jar produit ainsi que le driver postgresql

je lance un script dans bin :
zsh bin/TestDBManager.zsh
lequel contient :
#! /bin/zsh
java -cp ../lib/yvonthor.jar:../pg74jdbc3.jar
com.yvonthor.test.TestDBManager

il y a bien les jars (yvonthor.jar et pg74jdbc3.jar) ds le cp.

le message d'erreur :

~/bin/Java/myPackages> zsh bin/TestDBManager.zsh
Exception in thread "main" java.lang.NoClassDefFoundError:
com/yvonthor/test/TestDBManager

le TestDBManager est bien inclus dans le yvonthor.jar :
~/bin/Java/myPackages> jar tf lib/yvonthor.jar
com/
com/yvonthor/
com/yvonthor/dbms/
com/yvonthor/dbms/DBManager.class
com/yvonthor/test/
com/yvonthor/test/TestDBManager.class

le fichier, très court, TestDBManager.java :
package com.yvonthor.test;

import java.sql.*;
import java.util.*;
import java.lang.*;
import com.yvonthor.dbms.*;

public class TestDBManager {

public static void main(java.lang.String[] args) {
DBManager dbm = new DBManager("org.postgresql.Driver",
"jdbc:postgresql://ww.xx.yy.zz:5432/macave", "postgresql", "topsecret");
System.exit(0);
}

}

(le résultat va à la console, pour l'instant)

--
yt

2 réponses

Avatar
nioTo

Sans doute un truc bête auquel je ne pense pas, je suis dans un rep
"myPackages" dans lequel il y a :
bin -> les fichiers zsh de lancement
classes -> les résultats des compils
lib -> le jar produit ainsi que le driver postgresql

je lance un script dans bin :
zsh bin/TestDBManager.zsh
lequel contient :
#! /bin/zsh
java -cp ../lib/yvonthor.jar:../pg74jdbc3.jar com.yvonthor.test.TestDBM anager



les chemins du classpath ne sont pas relatifs à
l'endroit où se trouve le script que tu éxécutes
mais de l'endroit où tu l'éxécutes, dans le cas présent
il est défini par 2 jar qui devrait se trouver dans un répertoire
lib/ qui est a m^me niveau que ton répertoire myPackages

Si tu lances le scripts depuis le rép bin/ ça va marcher

utilises plutôt des chemins absolus


nioTo

Avatar
yvon.thoravalNO-SPAM
nioTo <nioto+ wrote:

les chemins du classpath ne sont pas relatifs à
l'endroit où se trouve le script que tu éxécutes
mais de l'endroit où tu l'éxécutes, dans le cas présent
il est défini par 2 jar qui devrait se trouver dans un répertoire
lib/ qui est a m^me niveau que ton répertoire myPackages


OK, merci beaucoup, j'étais persuadé du contraire :))

je pensais que les scripts d'éxcécutaient depuis là où ils sont d'où les
../ dans le script, maintenant ça roule impec :

connection a la base de donnees
{t_address_adr={adr_id={
[...]

--
yt