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

JWS Java Discussion :

Lister un répertoire


Sujet :

JWS Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut Lister un répertoire
    Bonjour

    Voici mon problème.
    J'ai conçu un programme Java (J2SE 5) au départ Stand-alone. Pour favoriser sa visibilité, je veux le mettre à disposition via Java Web Start.
    Voici le fichier jnlp de mon programme :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <jnlp spec="1.0+"
          codebase="http://xxx.xxx.xxx.xxx/~gldavid/MyProg/" 
          href="MyProg.jnlp">
       <information>
          <title>Demo</title>
          <vendor>Myself</vendor>
          <description>Demo</description>
          <homepage href="https://xxx.xxx.xxx.xxx/~gldavid/MyProg/index.html"/>
          <description kind="short">Prediction</description>
          <offline-allowed/>
       </information>
            <security>
                    <all-permissions/>
            </security> 
       <resources>     
            <jar href="MyProg.jar"/>   
            <j2se version="1.5+"
                  href="http://java.sun.com/products/autodl/j2se"/>
       </resources>
       <application-desc main-class="com.gldavid.gui.Main"/>
    </jnlp>
    Le jar est bien évidemment signé.
    Mais à l'exécution via JWS, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.NullPointerException
    	at com.gldavid.gui.PluginsList.scan(PluginsList.java:128)
    Soit dans la fonction suivante (j'ai commenté la ligne erronnée):
    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
     
    public Vector<String>scan() {
    		java.util.Properties properties = System.getProperties();
    		String dir = properties.getProperty("user.dir")+"/Plugins";
    		String name = "file://"+dir;
    		System.out.println("name= "+name);
    		File repertory = null;
    		try{
    			repertory = new java.io.File(new java.net.URI(name));
    		}
    		catch(java.net.URISyntaxException urise){
    			JOptionPane.showMessageDialog(BioXpress.mw, urise.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
    		}
    		File[] files = repertory.listFiles();
    		Vector<String>zips = new Vector<String>();
                    //Problème à la ligne suivante, le tablo files est null
    		for(File f : files){
    			if(f.isDirectory())
    				zips.add(f.getName());
    		}
    		return zips;
    	}
    Donc, ma fonction listFiles me renvoit null. Je pense que je dois avoir un problème avec le codebase de mon jnlp.
    Quelqu'un peut-il m'aider ?
    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Malheureusement l'API de la classe File est vraiment très pauvre... en particulier en ce qui concerne la gestion des exceptions (c'est bien simple il n'y en a pas ).

    Ainsi listFiles() peut retourner null dans 2 cas :
    • Si l'objet File ne représente pas un répertoire.
    • Si une erreur d'I/O survient au niveau du système (et là les causes peuvent être multiple)


    Dans ton cas es-tu sûr que le répertoire existe ?


    Mais dans tous les tu dois vérifier le retour de listFiles() afin de traiter ce cas... Par contre il n'est pas possible de connaitre l'origine exacte de l'erreur (en tout cas actuellement).

    a++

    PS : Pourquoi passer par URI pour créer l'objet File ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String dir = properties.getProperty("user.dir")+"/Plugins";
    File repertory = new File(dir);
    De plus ton try/catch est mal placé car en cas d'exception tu continues quand même le traitement (le try/catch devrait englober toute ta méthode).

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Salut adiGuba

    Merci de ta réponse. De toute façon, j'ai sciemment simplifié le problème. Vu que cette appli doit tourner en JWS pour faire office de démo, j'ai donc volontairement mis en dur tous les paths enregistrés dans mes Properties.
    Bon, ça tourne mieux MAIS.....j'ai encore une exception (et plus sévère) :
    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
     
    java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.sun.javaws.Launcher.executeApplication(Launcher.java:1205)
    	at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1151)
    	at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:998)
    	at com.sun.javaws.Launcher.run(Launcher.java:105)
    	at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.NoClassDefFoundError: com/bioxpr/interfaces/Activable
    	at java.lang.ClassLoader.defineClass1(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
    	at com.bioxpr.loader.MultiClassLoader.loadClass(MultiClassLoader.java:75)
    	at com.bioxpr.loader.Test.loadClass(Test.java:16)
    	at com.bioxpr.gui.PluginsList.scanning(PluginsList.java:111)
    	at com.bioxpr.gui.PluginsList.<init>(PluginsList.java:41)
    	at com.bioxpr.gui.MainWindow.Scan(MainWindow.java:150)
    	at com.bioxpr.gui.BioXpress.main(BioXpress.java:44)
    	... 9 more
    Pfffff.... Inutile de dire que ça marche localement mais bien évidemment, cela ne tourne pas via JWS et j'obtiens cette exception.
    Merci d'avance à celui qui m'aidera.

    GLDavid, qui a hâte d'être en week-end.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Apparemment, il ne semble pas trouver mon interface Activable. Je construis mon Jar à l'aide d'un fichier ant que voici :
    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
     
    <?xml version="1.0"?>
     
    <project name="PCRPlugin" basedir=".">
     
    	<property name="lib.dir" value="../Pluginnable"/>
    	<property name="src.dir" value="./src"/>
    	<property name="bin.dir" value="./bin"/>
    	<property name="jar.dir" value="./Jar"/>
    	<property name="project.name" value="MyProg"/>
     
    	<path id="classpath">
    		<pathelement path="${lib.dir}"/>
    		<fileset dir="${lib.dir}">
    			<include name="**/*.jar"/>
    		</fileset>
    	</path>
     
    	<target name="cleanbin">
    		<delete includeemptydirs="true">
    			<fileset dir="${bin.dir}" includes="**/*"/>
    		</delete>
    	</target>
     
    	<target name="cleanJar">
    		<delete includeemptydirs="true">
    			<fileset dir="${jar.dir}" includes="**/*"/>
    		</delete>
    	</target>
     
    	<target name="createBin">
    		<mkdir dir="${bin.dir}"/>
    	</target>
     
    	<target name="createJar">
    			<mkdir dir="${jar.dir}"/>
    		</target>
     
    	<target name="compile" depends="createBin">
    		<javac srcdir="${src.dir}" destdir="${bin.dir}" classpathref="classpath"/>
    	</target>
     
    	<target name="jar" depends="createJar, compile">
    		<jar destfile="${jar.dir}/${project.name}.jar" basedir="${bin.dir}">
    			<zipfileset src="${lib.dir}/Pluginnable.jar"/>
    			<manifest>
    				<attribute name="Main-Class" value="com.bioxpr.gui.BioXpress"/>
    			</manifest>
    		</jar>
    	</target>
     
    </project>
    Qu'ai-je encore oublié de faire ?

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Les jars ne peuvent pas contenir d'autres jars ! (enfin c'est possible mais ils ne sont pas lu, ou alors il faut utiliser un ClassLoader personnalisé).

    Tu dois déclarer tout tes jar dans le fichier JNLP, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <jar href="MyProg.jar"/>
    <jar href="lib/Pluginnable.jar"/>
    a++

  6. #6
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Oki, je vais effectuer tout ça.
    Merci ami adi !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

Discussions similaires

  1. Lister un répertoire Web distant
    Par antony dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2006, 12h02
  2. Lister les répertoires d'un répertoire
    Par Faith's Fall dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/02/2006, 11h01
  3. lister un répertoire...
    Par airod dans le forum Général Python
    Réponses: 2
    Dernier message: 09/01/2006, 10h29
  4. Lister un répertoire
    Par ArkAng3 dans le forum MFC
    Réponses: 7
    Dernier message: 29/09/2005, 13h13
  5. Comment copier et lister un répertoire ?
    Par pepito62 dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/05/2005, 19h14

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