Bonjour,
j'ai une application d'extension .jar et je voudrais bien avoir le code source de cette application. j'ai extracté l'application et je n'ai obtenu que des fichiers .class donc pas de code sources (fichiers .java)!! comment faire ?!
Merci..
Version imprimable
Bonjour,
j'ai une application d'extension .jar et je voudrais bien avoir le code source de cette application. j'ai extracté l'application et je n'ai obtenu que des fichiers .class donc pas de code sources (fichiers .java)!! comment faire ?!
Merci..
Bonjour,
Il faut que tu utilise un décompilateur par ex jad mais il ne te donnera pas le code source seulement une interprétation en java du code compilé. Tu n'aura pas également les commentaires. Et les noms de variable n'auront pas forcémentu une grande signification.
Pour récupérer le code source d'un jar tu dois le decompiler. Tu peux utiliser JAD mais le code récupérer ne sera pas parfait
bonjour,
j'ajouterais que la décompilation n'est pas très légal, si tu n'en es pas le propriétaire !
pour quel raison as tu besoin d'avoir accès aux sources ?
L'application que j'ai contient des fonctionnalités dont j'ai besoin mais je dois changer des trucs et rajouter d'autres! c'est pour ca que j'ai besoin d'extraire le code source pour le comprendre puis l'adapter en fonction de mes besoins!
Si tu ne possèdes pas le code source tu devrais essayer de le réaliser tout seul. Si tu utilises le code décompiler tu risques de te prendre la tete :aie:
rouge87: d'ou viens cette application, la license vous donne-t-elle les droits de modification?
Sérieusement ? La loi a tranché sur des conditions où on a le droit ou pas le droit de décompiler ?
Je sais bien qu'en pratique, quand les gens viennent parler de décompilation, ils ont des intentions illégales en tête, mais il ne me semble pas que l'acte lui-même ait été légiféré d'une manière ou d'une autre.
(Cas particulier : si le programme a été crypté par une mesure raisonnablement efficace, là, ça pourrait passer pour un contournement de procédé de protection, et il y a au moins un doute.)
en france:
décompilation : "traduction de la forme du code".Citation:
Article L122-6-1
IV.La reproduction du code du logiciel ou la traduction de la forme de ce code n'est pas soumise à l'autorisation de l'auteur lorsque la reproduction ou la traduction au sens du 1º ou du 2º de l'article L. 122-6 est indispensable pour obtenir les informations nécessaires à l'interopérabilité d'un logiciel créé de façon indépendante avec d'autres logiciels, sous réserve que soient réunies les conditions suivantes :
1º Ces actes sont accomplis par la personne ayant le droit d'utiliser un exemplaire du logiciel ou pour son compte par une personne habilitée à cette fin ;
2º Les informations nécessaires à l'interopérabilité n'ont pas déjà été rendues facilement et rapidement accessibles aux personnes mentionnées au 1º ci-dessus ;
3º Et ces actes sont limités aux parties du logiciel d'origine nécessaires à cette interopérabilité.
Donc ce n'est autorisé que soit si autorisé par l'auteur, soit nécessaire à l'interopérabilité.
la réponse est donc simple, tu ne peux pas. C'est interdit.
En même temps, "adapter à ses besoins" peut facilement vouloir dire "rendre capable de communiquer avec les logiciels de mon entreprise."
Et ça, c'est de l'interopérabilité. Mais si c'est pour changer ou ajouter telle fonctionnalité en interne, effectivement, pas autorisé d'après l'article précité.
(Je l'avais oublié d'ailleurs vu que je fais toujours ce genre de choses pour interopérabilité. Merci pour le rappel, tchize_)
Ca reste à démontrer. Ne pas confondre interopérabilité (exemple: j'ai besoin de pouvoir parler le même protocole que l'application pour lui envoyer des données depuis linux alors qu'elle ne tourne que sous windows et ne fonctionne pas sous wine) avec fonctionnalité (l'application ne prend que des CSV et j'ai besoin qu'elle prenne mes *.xls ou mes *.odf)
Les cas d'interopérabilité ne sont pas si courants que ça. De plus, il faut d'abord se heurter à un refus du vendeur de fournir les spécifications qui permettraient d'aboutir au même point. De toutes facons, la décompilation pour interopérabilité n'autorise pas la recompilation. On reste dans le domaine du "j'apprend comment ça marche pour savoir comment lui parler".
Pour être clair : le texte dit que tu as le droit de décompiler (dans le contexte précisé par tchize) uniquement à des fins de compréhension (décortiquer un protocole non documenté), et non à des fins de modification.
Bonjour,
Toujours dans le même sujet, mais cas différent : je développe autour d'un progiciel dont il manque la documentation technique pour les utiliser.
J'ajoute que j'ai le droit d'ajouter/modifier les fichiers du progiciel pour l'adapter aux besoins du client (templates FileMarker, servlets, fichiers webs, etc.).
Ai-je le droit de décompiler certaines classes standards du progiciel pour en comprendre l'utilisation afin de créer les miennes et ajouter les fonctionnalités voulues ? Ça rentre dans le cadre de l'interopérabilité (entre mes fichiers et ceux du progiciel) ?
comme dit, l'interoparébilité répond à des critère stricts (nottament le refus du vendeur de fournir les documents utiles) et ne permet en tout état de cause pas la recompilation. En gros ca autoriserais à utiliser l'information pour convertir votre format en leur format, pas à rendre leur application capable de lire votre format.
Je suis d'accord, je ne modifie en rien leur application, je n'édite que nos propres fichiers de développement qui sont autour du progiciel (donc pas de recompilation). Il me reste "le point refus de fournir les documents utiles".
La vraie question est donc : en supposant que l'éditeur refuse de fournir les documents utiles, il n'y a rien dans ce que j'ai énoncé qui disqualifie l'interopérabilité ? (je comprendrai bien sûr qu'un oui ne veut pas dire non plus que tous les critères sont satisfaits)
Si tu as besoin de faire communiquer ton appli/tes devs avec la leur, qu'ils refusent de te fournir la spec sur le format de communication (au sens large) de leur données, alors tu peux décompiler les modules correspondants à l'encodage des données.
C'est un peu ça... J'ai une javadoc de leur API très peu intelligible (genre method(arg0, arg1). Je tenterai d'obtenir une information plus détaillée.