Dmcl40.dll allready loaded in another classloader

fatalpicard Messages postés 17 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 15 novembre 2007 - 25 avril 2007 à 15:39
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 26 avril 2007 à 14:43
Bonjour,

je dévellope une application de publication de document via WSAD pour la solution logiciel DOCUMENTUM. J'ai crée une classe (ImportManager.java) qui importe des documents quand je la déroule (via le main) en mode console je n'ai pas d'erreurs.

Par contre quand je passe par un objet du type ImportManager dans un servlet j'ai le message d'erreur ci dessous :

[25/04/07 13:48:34:819 CEST]  4bb8595 WebGroup      E SRVE0026E: [Erreur de servlet]-[Native Library C:\Program Files\Documentum\Shared\dmcl40.dll already loaded in another classloader]: java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\Documentum\Shared\dmcl40.dll already loaded in another classloader
 at com.documentum.fc.connector.DfConnection.(DfConnection.java:92)
 at com.documentum.fc.connector.DfConnectionFactory.getConnection(DfConnectionFactory.java:25)
 at com.documentum.fc.client.DfClientSupport.getConnection(DfClientSupport.java:584)
 at com.documentum.fc.client.DfClientSupport.newSession(DfClientSupport.java:151)

Avez vous une idée merci d'avance.

12 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 avril 2007 à 17:15
Salut,

oui faut que tu ajoutes le chemin des librairies (soit le rep qui contient ta DLL) dans le LD_LIBRARY_PATH pour que ton application puisse trouver les DLL. regarde dans la doc il doivent surement expliquer comment faire

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
25 avril 2007 à 20:01
Salut,

rectification de mon poste précédent en fait ton pc charges 2 fois la librairie .... maintenant faut que tu vois qui en est la cause (soit un script de démarrage, ou autre chose).

cherche les script (ou autre) qui contienent  soit "set LD_LIBRARY_PATH=..." ou encore "java -Djava.library.path=XXXX l'aplicationJava"

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
fatalpicard Messages postés 17 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 15 novembre 2007
26 avril 2007 à 08:30
Merci pour l'info, après recherche je n'est trouvé les commandes que tu m'as indiqué.

pour arriver au message d'erreur que j'ai donné dans le premier message, j'ai du commenter pas mal de code pour trouver la source de l'erreur ...

à l'origine j'ai le message d'erreur ci-dessous, si ca peut aider

[Erreur de servlet]-[(class: importenmasse/ImportManager, method: performImport signature: (Ljava/io/File&#59;I)V) Incompatible argument to method]: java.lang.VerifyError: (class: importenmasse/ImportManager, method: performImport signature: (Ljava/io/File;I)V) Incompatible argument to method
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 09:17
Salut,

l'erreur veut simplement dire que tu ne passe pas les bon argument à la méthode
void performImport(java.io.File, int)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fatalpicard Messages postés 17 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 15 novembre 2007
26 avril 2007 à 09:39
Merci de ta réponse.

ben je viens de vérifier, les données passées en paramètres sont du bon type, le truc fou c'est qu'avant l'appel de cette méthode j'ai des system.out.prinln("..") pour le log et il n'apparaissent même pas ...!!!

je comprend pas pq il craque pas à la compil mais à l'éxecution
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 09:48
Salut,

donne l'erreur et le bout de code responsable (je ne te garanti rien je ne fait pas de web)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
fatalpicard Messages postés 17 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 15 novembre 2007
26 avril 2007 à 10:09
Désolé pour la masse de code, j'espére qu'il sera lisible, merci d'avance







ci dessous la création de l'objet




ImportManager publication =





new


ImportManager();publication.execute(arguments, System.out);





Ci dessous le code pour initalise l'import










public





void

execute (Map parameters, OutputStream output)


throws

Exception {


// ---------------------------- //






// --- Get information step --- //






// ---------------------------- //






// Get parameters

Object currentId =





null

;String docbase = (String)parameters.get (


"docbase_name"
);

// docbase

System.out.println (




"[ImportManager.execute] - Info - docbase "
+docbase);String user = (String)parameters.get (


"docbase_user_name"
);

// user

System.out.println (




"[ImportManager.execute] - Info - user "
+user);String password = (String)parameters.get (


"docbase_user_password"
);

// password

System.out.println (




"[ImportManager.execute] - Info - password "
+ password);String strPathToFiles = (String)parameters.get (


"pathToFiles"
);


// Connection to the docbase







if

(


this

.session !=


null

) {disconnectFromDocbase();

}

connectToDocbase (docbase, user, password);


// Connection to the database// connectToDatabase (parameters);








// Read path directory

File pathToFiles =





new

File (strPathToFiles);

// Path to the root hierarchy to import







if

(!pathToFiles.exists ()) {System.out.println (


"[ImportManager.execute] - Error - The file : '"
+ pathToFiles.getAbsolutePath () +

"' doesn't exist. Process cancelled."
);disconnectFromDocbase ();


// Disconnect from docbase






//disconnectFromDatabase ();







return

;}



if

(!pathToFiles.isDirectory ()) {System.out.println (


"[ImportManager.execute] - Error - The file : '"
+ pathToFiles.getAbsolutePath () +

"' is not a directory. Process cancelled."
);disconnectFromDocbase ();


// Disconnect from docbase// disconnectFromDatabase ();









return

;}


// Get the version of the hierarchy to import







int

version = 0;



try

{version = FileSystemUtil.getVersionToImport (



new

File (pathToFiles.getAbsolutePath () + File.separator ));



if

(version < 0)


throw





new

NullPointerException (

"[ImportManager.execute] - Error - No version directory found to import."
);}



catch

(NullPointerException npe) {System.out.println (npe.getMessage () +


" Process cancelled."
);disconnectFromDocbase ();


// Disconnect from docbase// disconnectFromDatabase ();









return

;}

performImport (pathToFiles, version);

 


// Disconnect from docbase

disconnectFromDocbase ();







// Disconnect from database// disconnectFromDatabase ();



}














Ci dessous la méthode qui gére l'import







private




void

performImport (File pathToFiles,


int

version)


throws

DfException, SQLException {


// --------------------- //






// --- Creation step --- //






// --------------------- //






// Init the summary

Document doc =





new

Document ();Element eRoot = SummaryUtil.init (doc);


// Create topics hierarchy and import documents







try

{


// Create year topic

File fYear =





new

File (pathToFiles.getAbsolutePath () + File.separator);String topicId = ThemeUtil.create (



this

.session, fYear, Constantes.UNIVERSE, Constantes.HEADING, ThemeUtil.FIRST_LEVEL_THEME_ID, ThemeUtil.getMaxElementOrder (


this

.session, ThemeUtil.FIRST_LEVEL_THEME_ID) + 1);

// Increment the element order to get next free






// Create the associated entry in the summary

Element eleYear =





new

Element (SummaryUtil.TOPIC).setAttribute (SummaryUtil.NAME_ATTRIBUTE, fYear.getName ());eRoot.addContent (eleYear);


// Call recursive method that traverse and import given file system

File fVersion =





new

File (fYear.getAbsolutePath () + File.separator + VersionDirectoryFilter.VERSION_PREFIX + version);FileSystemUtil.createHierarchy (



this

.session, fVersion, Constantes.UNIVERSE, Constantes.HEADING, topicId, ThemeUtil.FIRST_ELEMENT_ORDER, eleYear, Integer.toString(version),


this

.path);}



catch

(NullPointerException npe) {System.out.println (npe.getMessage () +


" Process stopped."
);disconnectFromDocbase ();


// Disconnect from docbase// disconnectFromDatabase ();









return

;}


// Create summary document







try

{SummaryUtil.create (



this

.session, doc, Integer.toString(version),


this

.path);}



catch

(IOException ioe) {System.out.println (ioe.getMessage () +


" The summary will not be created."
);}


// Active imported documents

DocumentUtil.active (





this

.session, Integer.toString(version));System.out.println (


"[ImportManager.performDeleteAndImport] - Info - Documents activated."
);


// Publish document

System.out.println (




"[ImportManager.performDeleteAndImport] - Info - Publication dans la partie Front."
);DocumentUtil.publish(



this

.session);}
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 10:59
Salut,

question comme ça la signature de la méthode
private
void performImport (File pathToFiles,
int version)
throws DfException, SQLException {

correspond à celle indiqué par la java doc ? ou c'est de toi ? ou autre ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
fatalpicard Messages postés 17 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 15 novembre 2007
26 avril 2007 à 11:08
Salut

La signature est de moi, la méthode performImport est appelée depuis la méthode execute qui elle même implémente la méthode excute de la classe éditeur de docuementum  (IDmMethod) 

lol tous le monde à suivi..
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 11:38
Salut,

pour le test : essaye de catcher le execption et d'enlever les throws

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
fatalpicard Messages postés 17 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 15 novembre 2007
26 avril 2007 à 14:30
Salut je retombe sur le message d'erreur du debut ...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 14:43
Salut,

....
regarde ces postes ICI et ICI defois qu'ils t'aide et également cette doc d'installetion ICI

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous