Modification fichier .class

Résolu
Zeo963 Messages postés 1 Date d'inscription mercredi 10 mai 2023 Statut Membre Dernière intervention 10 mai 2023 - Modifié le 10 mai 2023 à 20:28
 Zeo963 - 12 mai 2023 à 21:53

Bonjour,

Dans un premier temps je remercie l'équipe et les membres qui se trouve sur le site qui contribue à son développement !

Avant de poser la questions et de déranger des personnes, j'ai fait quelques recherche qui concerne le sujet... j’ai trouvé quelques discussions mais j'ai bien peur que ça ne m'a pas plus avancé la dessus ou alors j'ai pas tout compris

J'ai eu en tête de vouloir modifier un fichier à la base .jar, jusque la rien de foufou, mais le dossier qui m'intéressais que j'ai trouvé du moins que je pense avoir trouver est en .class, j'ai donc cherché un logiciel qui peut l'ouvrir et j'ai trouvé le logiciel "cavaj" qui effectivement l'ouvre

j'ai chercher la ligne qui pourrait m'aider à modifier ce que je veut :  
 

public boolean canSilkHarvest(World world, BlockPos pos, IBlockState state, EntityPlayer entityplayer)
{
return false; "je veux juste mettre la valeur à true"



Quand je veux le sauvegarder hé bien j'ai constaté qu'on ne pouvait pas s'attendre à ce qu'il reste en .class et c'est la où est mon problème c'est que je ne sais pas ce qu'il faut faire pour le décompiler, modifier la valeur à true et le recompiler l'état d'origine

Pour expliquer le sujet, je veux modifier un mod du jeu Minecraft nommé Thaumcraft, ce mod génère des cristaux dans le monde, quand ont les cassent ils drop un matériaux mais pas les cristaux visuel et je veux juste pouvoir le casser et pouvoir le récupérer pour le replacer ailleurs

Je sais pas si tout est claire si ce n'est pas le cas j'en suis désolé et je reformulerais mon souci

Si quelque veut bien m'aider je le remercie d'avance

5 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
10 mai 2023 à 21:31

Bonjour,

Tout d'abord un .jar c'est juste un fichier zip qui contient des .class (et éventuellement d'autres fichiers)

Ensuite, un très bon décompilateur Java c'est JD-GUI : http://java-decompiler.github.io/

Et enfin, le résultat de la décompilation c'est le code source Java, pour obtenir à nouveau un .class qui remplacerait le précédent il faut le recompiler dans la même version de Java, ce qui nécessite pour cela d'avoir installé un JDK de même version (ou plus récent avec une option de compatibilité), ainsi qu'un accès à toutes les autres dépendances potentielles de la classe, c'est à dire les autres .class utilisés dans le code (cf. la liste des import en début du code Java).


0

Bonjour,

merci pour votre réponse qui est claire pour moi et c’est fort agréable 

En ayant fait des petites recherches avant j’ai bien téléchargé JE Gui et JDK, pour ça c’est plus ou moins ok, enfin sur ce qu’il faut utiliser 

Mais j’ai remarqué que c’était pas du tout un genre de logiciel, et je n’ai pas très bien compris les démarches à faire, j’ai trouvé des explications disant qu’il fallait que je prenne mon class et que je le pose sur l’icône de JD Gui mais là pour moi comprend pas trop 

Après en lisant ce que vous dite par rapport à là source, hé bien je ne l’ai pas car ce n’est pas moi qui est créé ce fichier du coup je pense que c’est un peu foutu pour que je puisse faire quelque chose dessus j’imagine non ?

Je viens d’avoir une idée aussi là dessus si jamais je peux pas modifier ce que je n’ai pas créé, étant donné que je peux ouvrir tous les .class que contient le .jar est ce qu’il est possible que je parte de rien en créant moi même le dossier en faisant du copier coller des codes ?

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
11 mai 2023 à 08:44

Bonjour,

Sous Windows, tu peux faire un clic droit sur le fichier .class ou le fichier .jar qui contient tous les .class puis "Ouvrir avec" et choisir JD-GUI.

Ensuite, tu peux faire File > Save (pour un .class) ou Save all sources (pour un .jar) pour enregistrer le code Java.

L'avantage d'avoir l'intégralité du .jar ce sera pour pouvoir recompiler la classe ensuite, même si on peut faire sans.


0

Bonsoir,

Je n’avais pas téléchargé ce qu’il fallait en JD Gui, c’était un dossier compressé avec tout un tas de .class dedans, j’ai trouvé l’application 

par contre je l’ouvre avec je fais save comme vous dites, j’ai bien tous les dossiers en .java maintenant mais pour l’utilisation de JDK, je peine un peu il y a des applications dans tout les sens est-ce normal ?

j’en ai essayé quelques une mais rien sauf une qui a fait une fenêtre style cmd ça a écrit quelque truc et après ça c’est fermé 

ah moins que j’ai mal compris et que je ne dois pas utiliser encore JDK ?

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
11 mai 2023 à 22:02

Le JDK s'utilise en ligne de commandes, en l'occurrence pour compiler il faut utiliser javac.exe

Tu dois ouvrir une invite de commandes dans le dossier où se trouve le fichier .java modifié et faire :

"C:\\...\\javac.exe" TonFichier.java

Il y aura probablement des erreurs, mais une fois celles-ci corrigées tu devrais avoir un nouveau fichier .class avec tes modifications.

0

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

Posez votre question

Bonsoir,

j’ai pris note de tout ce que tu m’as dit et j’ai mis en application, cela a fonctionné mais effectivement pour cette partie je ne risquais pas de trouver ça comme ça

Pour la partie JDK avec l’ouverture d’un invite de commande 

Je te remercie pour toutes ces explications très compréhensibles, j’espère ne pas avoir usé trop de ton temps 

0
Rejoignez-nous