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

Pas la Class

4 réponses
Avatar
artintel
Un programme marche sous eclipse en mode console mais pas "java
Conexion" que ce soient dans les repertoires C:\Documents and Settings
\user\workspace\PROJET\bin\coNeXioN (worskpace d'eclipse ou il y a
le .class) ou dans un repertoire ou j'ai copie le .class et tous
les .jars qui apparaissent dans le PROJET sous eclipse. J'imagine que
c'est une question de path mais meme apres avoir lu plein de chose sur
CLASSPATH je ne comprends pas du tout ce qu'il faut faire ?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ PROGRAMME JAVA
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

package coNeXioN;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Conexion
{
public static void main (String args[])
{
String URL =3D "jdbc:sqlserver://
10.0.0.3;database=3DLaBase;user=3Dclient;password=3Dclient";
String username =3D "sa";
String password =3D "mot_de_passe";

try {
Class.forName
("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (Exception e) {
System.out.println("Failed to load JDBC/ODBC driver.");
return;
}

Statement stmt =3D null;
Connection con=3Dnull;
try {
con =3D DriverManager.getConnection (
URL,
username,
password);
stmt =3D con.createStatement();
} catch (Exception e) {
System.err.println("problems connecting to "+URL);
}

try {
ResultSet result =3D stmt.executeQuery("SELECT * FROM
Activit=E9Dossiers where Num=E9roDossier =3D 257018807");
System.out.println("Resultat =3D "+result);
while (result.next())
{
System.out.println("-------------");
System.out.println("Dossier : "+result.getString
("Dossier"));
}

con.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ EXECUTION DANS ECLIPSE
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Resultat =3D com.microsoft.sqlserver.jdbc.SQLServerResultSet@1457cb
-------------
num=E9roDossier : 257018807
-------------
num=E9roDossier : 257018807
-------------
num=E9roDossier : 257018807


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ CLASSPATH
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

.;
C:\PROGRA~1\Java\jdk1.6.0_12\bin;



@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ EXECUTION EN MODE CONSOLE
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

L:\TMP>javac Conexion.java

L:\TMP>java Conexion
Exception in thread "main" java.lang.NoClassDefFoundError: Conexion
(wrong name: coNeXioN/Conexion)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Conexion. Program will exit.

4 réponses

Avatar
toto
artintel wrote:

L:TMP>javac Conexion.java

L:TMP>java Conexion
Exception in thread "main" java.lang.NoClassDefFoundError: Conexion
(wrong name: coNeXioN/Conexion)



Ben perso j'aurais déjà fait :


javac -d . Conexion.java

java coNeXioN.Conexion


Mais c'est peut-être pas le seul problème, il faut aussi s'assurer que le
jar contenent la classe com.microsoft.sqlserver.jdbc.SQLServerDriver soit
dans le classpath
Avatar
artintel
On 4 juil, 10:45, toto wrote:
artintel wrote:
> L:TMP>javac Conexion.java

> L:TMP>java Conexion
> Exception in thread "main" java.lang.NoClassDefFoundError: Conexion
> (wrong name: coNeXioN/Conexion)

Ben perso j'aurais déjà fait :

javac -d . Conexion.java

java coNeXioN.Conexion

Mais c'est peut-être pas le seul problème, il faut aussi s'assurer qu e le
jar contenent la classe com.microsoft.sqlserver.jdbc.SQLServerDriver soit
dans le classpath



Merci, en suivant tes conseils; j'ai fais :

1 - L:TMP>javac -d L:tmp Conexion.java *//*Commentaire/* -d L:tmp
etant le repertoire ou se trouvent les fichiers *//*

2 - Set classpath = %classpass%;K:Microsoft SQL Server 2005 JDBC
Driversqljdbc_1.0frasqljdbc.jar

3 - java coNeXioN.Conexion

Le classpath que j'ai rajoute, il sert bien a l'execution de java
coNeXioN.Conexion ? Ca signifie que la compilation du .class n'integre
pas les classes externes ? Je me gourre completement ? ;o)
Avatar
toto
artintel wrote:

[...]

Merci, en suivant tes conseils; j'ai fais :

1 - L:TMP>javac -d L:tmp Conexion.java *//*Commentaire/* -d L:tmp
etant le repertoire ou se trouvent les fichiers *//*



oui, mais comme tu es déjà dans le répertoire l:tmp, -d . est équivalent à
à "-d L:tmp"

2 - Set classpath = %classpass%;K:Microsoft SQL Server 2005 JDBC
Driversqljdbc_1.0frasqljdbc.jar



à ma grande honte je ne sais pas comment sont gérés les classpath (et les
path) sous windows. J'ai juste appris que parfois on peut remplacer les
backslash par des slash (mais pas partout) et que les espaces dans les noms
de répertoires peuvent poser des problèmes. Pour ces points il faut plutôt
demander à une spécialiste de cet os exotique ;-)

3 - java coNeXioN.Conexion

Le classpath que j'ai rajoute, il sert bien a l'execution de java
coNeXioN.Conexion ? Ca signifie que la compilation du .class n'integre
pas les classes externes ? Je me gourre completement ? ;o)



Ben non le classpath sert aussi bien au compilateur qu'à la machine
virtuelle, donc si tu pouvais compiler avant, alors c'est que la classe
pour le driver était trouvée.
Avatar
Patrick
Le 06/07/2009 18:23, toto a écrit :

Le classpath que j'ai rajoute, il sert bien a l'execution de java
coNeXioN.Conexion ? Ca signifie que la compilation du .class n'integre
pas les classes externes ? Je me gourre completement ? ;o)



Ben non le classpath sert aussi bien au compilateur qu'à la machine
virtuelle, donc si tu pouvais compiler avant, alors c'est que la classe
pour le driver était trouvée.



Pas du tout: Java peut charger des classes dynamiquement, en particulier
pour les drivers (avec Class.forName) donc le classpath de compilation
n'est pas forcément le même qu'à l'exécution.

--
Patrick