Comment récupérer la date de modification de la classe ?
7 réponses
JFA
Bonjour.
J'ai mes classes dans un jar.
L'une d'elle (placée dans un package) veut récupérer sa date de modification
(lasModified).
J'ai essayé sans succès d'utiliser this.getClass().getName() pour récupérer
le fichier.
Puis this.getClass().getResource() mais le getResource() me réclame le nom
du fichier.
Je tourne en rond.
Merci de m'aider.
Quelque chose dans ce gout la devrait fonctionner, non ?
Symon
JFA wrote:
Bonjour. J'ai mes classes dans un jar. L'une d'elle (placée dans un package) veut récupérer sa date de modification (lasModified). J'ai essayé sans succès d'utiliser this.getClass().getName() pour récupérer le fichier. Puis this.getClass().getResource() mais le getResource() me réclame le nom du fichier. Je tourne en rond. Merci de m'aider.
Quelque chose dans ce gout la devrait fonctionner, non ?
Symon
JFA wrote:
Bonjour.
J'ai mes classes dans un jar.
L'une d'elle (placée dans un package) veut récupérer sa date de modification
(lasModified).
J'ai essayé sans succès d'utiliser this.getClass().getName() pour récupérer
le fichier.
Puis this.getClass().getResource() mais le getResource() me réclame le nom
du fichier.
Je tourne en rond.
Merci de m'aider.
Quelque chose dans ce gout la devrait fonctionner, non ?
Symon
JFA wrote:
Bonjour. J'ai mes classes dans un jar. L'une d'elle (placée dans un package) veut récupérer sa date de modification (lasModified). J'ai essayé sans succès d'utiliser this.getClass().getName() pour récupérer le fichier. Puis this.getClass().getResource() mais le getResource() me réclame le nom du fichier. Je tourne en rond. Merci de m'aider.
JFA
Merci de me répondre. J'avais essayé d'utiliser getClass().getResource("./" + getClass().getName() + ".class"); Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se trouvant dans un package. Peut-être parce que le chemin retourné par getName() est délimité par des points et non des slashes ?
Merci de me répondre.
J'avais essayé d'utiliser getClass().getResource("./" + getClass().getName()
+ ".class");
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se
trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se
trouvant dans un package.
Peut-être parce que le chemin retourné par getName() est délimité par des
points et non des slashes ?
Merci de me répondre. J'avais essayé d'utiliser getClass().getResource("./" + getClass().getName() + ".class"); Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se trouvant dans un package. Peut-être parce que le chemin retourné par getName() est délimité par des points et non des slashes ?
Alain
Merci de me répondre. J'avais essayé d'utiliser getClass().getResource("./" + getClass().getName() + ".class");
dans le class.getName tu as aussi le package genre java.util.Date
tu as deux moyen de résoutre ton soucis :
soit partit de la base des classes et ajouter le nom en remplasant les . par des /
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se trouvant dans un package. Peut-être parce que le chemin retourné par getName() est délimité par des points et non des slashes ?
Merci de me répondre.
J'avais essayé d'utiliser getClass().getResource("./" + getClass().getName()
+ ".class");
dans le class.getName tu as aussi le package
genre java.util.Date
tu as deux moyen de résoutre ton soucis :
soit partit de la base des classes et ajouter le nom en remplasant les .
par des /
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se
trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se
trouvant dans un package.
Peut-être parce que le chemin retourné par getName() est délimité par des
points et non des slashes ?
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se trouvant dans un package. Peut-être parce que le chemin retourné par getName() est délimité par des points et non des slashes ?
JFA
Il faut dons mettre les mains dans le cambouis. J'avais pensé que Java proposerait une méthode qui ferait ce travail. Merci en tous cas.
tu as deux moyen de résoutre ton soucis :
soit partit de la base des classes et ajouter le nom en remplasant les . par des /
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se trouvant dans un package. Peut-être parce que le chemin retourné par getName() est délimité par des points et non des slashes ?
Ah oui effectivement, je voulais dire getSimpleName() [java5]. Ou comme
tu l'indiques, avec un indexOf.
Désolé ! ;)
Symon
Alain wrote:
Merci de me répondre.
J'avais essayé d'utiliser getClass().getResource("./" +
getClass().getName() + ".class");
dans le class.getName tu as aussi le package
genre java.util.Date
tu as deux moyen de résoutre ton soucis :
soit partit de la base des classes et ajouter le nom en remplasant les .
par des /
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se
trouvant dans la racine du Jar et que ça ne marche pas pour un fichier
se trouvant dans un package.
Peut-être parce que le chemin retourné par getName() est délimité par
des points et non des slashes ?
Ce que je ne comprends pas c'est pourquoi ça marche pour un fichier se trouvant dans la racine du Jar et que ça ne marche pas pour un fichier se trouvant dans un package. Peut-être parce que le chemin retourné par getName() est délimité par des points et non des slashes ?
Alain
Il faut dons mettre les mains dans le cambouis. J'avais pensé que Java proposerait une méthode qui ferait ce travail. Merci en tous cas.
c'est juste que j'ai suivi ton idée... d'ailleurs ca marche pas toujours car la class n'est pas nécessairement un fichier, mais un élémend dan,s un jar ou un URL plus bizare...
mais il y a peut être mieux, mais regarde alors dans ClassLoader
Il faut dons mettre les mains dans le cambouis.
J'avais pensé que Java proposerait une méthode qui ferait ce travail.
Merci en tous cas.
c'est juste que j'ai suivi ton idée...
d'ailleurs ca marche pas toujours car la class
n'est pas nécessairement un fichier, mais un élémend dan,s un jar
ou un URL plus bizare...
mais il y a peut être mieux,
mais regarde alors dans ClassLoader
Il faut dons mettre les mains dans le cambouis. J'avais pensé que Java proposerait une méthode qui ferait ce travail. Merci en tous cas.
c'est juste que j'ai suivi ton idée... d'ailleurs ca marche pas toujours car la class n'est pas nécessairement un fichier, mais un élémend dan,s un jar ou un URL plus bizare...
mais il y a peut être mieux, mais regarde alors dans ClassLoader
Zazoun
Puisque ta classe est dans un .jar, tu peux utiliser JarURLConnection et les classes du package java.util.jar. Un petit exemple (à mettre dans un .jar pour qu'il fonctionne correctement, évidemment :-)) :
public static void main(String[] args) throws IOException { System.out.println("entry.getTime() = " + new Date(new Test().getTime())); }
private long getTime() throws IOException { final URL resource = getClass().getResource(getClass().getName() + ".class"); JarURLConnection connection = (JarURLConnection) resource.openConnection(); final JarEntry entry = connection.getJarEntry(); final long time = entry.getTime(); return time; } }
Puisque ta classe est dans un .jar, tu peux utiliser JarURLConnection
et les classes du package java.util.jar.
Un petit exemple (à mettre dans un .jar pour qu'il fonctionne
correctement, évidemment :-)) :
Puisque ta classe est dans un .jar, tu peux utiliser JarURLConnection et les classes du package java.util.jar. Un petit exemple (à mettre dans un .jar pour qu'il fonctionne correctement, évidemment :-)) :