IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Java Discussion :

Pb execution exec et .bat


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Par défaut Pb execution exec et .bat
    Bonjour,
    mon pb est un peu long et complique a expliquer.via un jbutton je lance un runtime.exec d'un fichier bat generer par Talend Open Studio. Ce fichier se trouve sur une machine distante(un serveur 2003). Mon projet est sur c:\workspace\COREP.Je test mon appli directement dans eclipse et la y'a pb.
    Voila mon bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String path="";
    Tos t = new Tos();
    String sbf = labnuminv.getText();
    String qte = labqte.getText();
    String perc = labperc.getText();
    if ((qte !="") & (perc !="") & (Rbet.isSelected())){
    path = "//192.168.15.21\\ETL\\File\\anoinvet\\ecartet.csv";
    t.creaFichier(path, sbf, qte, perc);
    String[] cmd ={"cmd.exe","/C","//192.168.15.21\\ETL\\Prog\\anoinvqte_0.1\\anoinvqte\\anoinvqte_run.bat"};
     t.lanceTos(cmd);
    l'appli creee bien le fichier, mais quand ma fonction lancetos demarre j'ai ce message d'erreur:
    erreurint: C:\workspace\COREP>java -Xms256M -Xmx1024M -cp ../lib/advancedLookupLib.jar;../lib/commons-collections-3.2.jar;../lib/javacsv.jar;../lib/jt400.jar;../lib/jxl.jar;../lib/talend_file_enhanced_20070724.jar;../lib/systemRoutines.jar;../lib/userRoutines.jar;.;anoinvqte.jar;../lib; projet_corep.anoinvqte.anoinvqte --context=Default
    rreur1 : java.lang.NoClassDefFoundError: projet_corep/anoinvqte/anoinvqte

    erreur1 : Caused by: java.lang.ClassNotFoundException: projet_corep.anoinvqte.anoinvqte


    les lignes qui apparaissent sont celles du fichier bat qui est sur le serveur.
    Quelqu'un a-t-il une petite idee ?
    Merci pour votre aide

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    J'imagine que les chemin commençant par ..\lib sont relatif à la position de ton fichier bat *sur le serveur* ... auquel cas c'est un peu normal que ça ne fonctionne pas (puisque tes jars ne sont pas dans c:\workspace -le dossier parent de c:\workspace\corep).
    Il risque de te falloir copier tes jar en local (pour simplifier les choses et vraisemblablement améliorer tes perfs en ne téléchargeant pzas systématiquement les jars) ; et ruser pour que les "..\" soient remplacés par les bonnes valeurs ... Il serait d'ailleurs ptet pas mal que ton fichier .bat utilisent une seule variable pour referencer ce "doossier de base" dans lequel sont tes jars

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Par défaut
    le fichier bat et generer automatiquement par Talend.Il va y avoir plusieurs utilisateurs pour cette appli, donc sur plusieures machines.Comment faire pour qu'il utilise le dossier qui ce trouve sur le serveur ?Modifier le fichier bat en mettant le chemin absolu?
    Merci

  4. #4
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    oui par exemple ... mais alors en mettant vmt un chemin absolu sur le réseau hein ... "\\192.168.bidule.chouette\........\lib\........." ...

    sinon avant de lancer ton fichier bat avec ton exec, tu peux faire un "cd" pour te placer sur le bon chemin (toujours 192.168 bidule)

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Par défaut
    l'idee du cd me plait bien, mais je ne vois pas comment la mettre en oeuvre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    public void lanceTos(String[] cmd){
    		Runtime rt = Runtime.getRuntime();
    		try{
     
    		final Process proc = rt.exec(cmd);
    		Thread t = new Thread() {
    			public void run() {
    				try {
    					BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    					@SuppressWarnings("unused")
    					String line = "";
    					try {
    						while((line = reader.readLine()) != null) {
    							// Traitement du flux de sortie de l'application si besoin est
    							System.out.println("erreurint: "+line+"\n");
    						}
    					} finally {
    						reader.close();
    					}
    				} catch(IOException ioe) {
    					ioe.printStackTrace();
    				}
    			}
    		};t.start();
     
    //		 Consommation de la sortie d'erreur de l'application externe dans un Thread separe
    		Thread s = new Thread() {
    			public void run() {
    				try {
    					BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
    					@SuppressWarnings("unused")
    					String line = "";
    					try {
    						while((line = reader.readLine()) != null) {
    							// Traitement du flux d'erreur de l'application si besoin est
    							System.out.println("erreur1 : "+line+"\n");
    						}
    					} finally {
    						reader.close();
    					}
    				} catch(IOException ioe) {
    					ioe.printStackTrace();
    				}
    			}
    		};s.start();
     
    		try {
    			proc.waitFor();
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		int status = proc.exitValue();
    		System.out.println("valeur de retour du sous proc2: "+status);
    	}catch (Exception e3) {
    		// TODO: handle exception
    		e3.printStackTrace();
    	}
    	}

  6. #6
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    mmmh tu peux enchainer deux commandes "MS-DOS" sur la meme ligne avec l'opérateur && ...
    mais je pense qu'un "cd" sur un chemin UNC ne va pas passer :/
    tu peux pas monter un lecteur réseau , qui serait le mm pour tout le monde ?... (Z:\qq chose...)

  7. #7
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    String[] cmd ={"cmd.exe","/C","pushd //192.168.15.21\\ETL\\Prog\\anoinvqte_0.1\\anoinvqte && anoinvqte_run.bat"};

    fonctionne peut-être ?...

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Par défaut
    Bon j'ai teste, aucune des solutions ne fonctionnent.
    Je continu a gratter.

  9. #9
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    Quel est le problème avec la solution utilisant pushd ?
    Ca donne quoi si tu exécutes directement la même commande dans ton shell ?

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 84
    Par défaut
    Reponse : Syntaxe de commande incorrecte

  11. #11
    Membre chevronné

    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Juin 2004
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Juin 2004
    Messages : 332
    Par défaut
    Es-tu sûr que ceci dans ton shell ne fonctionne pas ??

    pushd \\192.168.15.21\ETL\Prog\anoinvqte_0.1\anoinvqte && anoinvqte_run.bat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enlever la fenêtre DOS à l'execution d'un BAT
    Par anthony44j dans le forum Windows
    Réponses: 1
    Dernier message: 31/05/2007, 17h59
  2. Réponses: 1
    Dernier message: 06/04/2007, 14h58
  3. Execution d'un .bat sur un autre disque
    Par n8ken dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2006, 14h03
  4. Executer un fichier .bat sur commande Démarrer/Arrêter
    Par loïc.rio dans le forum Windows
    Réponses: 5
    Dernier message: 10/05/2006, 16h18
  5. Retourner un paramètre en sortie d'un executable pour un Bat
    Par Laurent GAUDILLIER dans le forum Langage
    Réponses: 2
    Dernier message: 03/04/2006, 23h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo