Помогите Как редактировать файлы .Class?

Nightfear

Старожил
Пользователь
Баллы
103
Имя в Minecraft
nightfear
На данный момент я знаю о InClassTranslator что в принципе не поможет проблеме. Он просто удаляет содержимое переменной,а не вывод её самой.

Таким образом есть программка, которая позволяет просматривать содержимое самих классов т.е. исходник код ява-скрипта: jd-gui .Полезная штука. С помощью её нахожу код, который нужно отредактировать или удалить, но становится вопрос: Как это сделать? Можно ли Eclipc-ом, и как это сделать что бы потом скомпилировать обратно в .class без ошибок?


Еще есть такая штука как MCP которая распакует за вас весь клиент майна и у вас будет возможность редактировать файлы формата .java с чем Eclipc или любой другой Ide редактор справится без каких либо проблем. Но не так то все просто. Сам по себе MCP не всегда может правильно распаковать и запаковать клиент, т.к. есть множество обстоятельств :

- Если клиент с модами;
- Если вы уже что-то правили левыми путями;
- Если IDE редактору что-то не понравится, то он просто напросто вас пошлет. Возможно это моя недоработка за счет малоопытности в dev-java , но все же.

В целом нужна помощь старожил в этом плане.
 
декомпилируешь нужный класс jd-gui, пихаешь содержимое в .java файлик с соответствующим названием, через консоль пишешь javac -cp джарки название.java, где джарки это список джарок с импортированными классами через ; потом смотришь ошибки, исправляешь, и снова javac. потом можешь вносить изменения и снова компилировать.
 
декомпилируешь нужный класс jd-gui, пихаешь содержимое в .java файлик с соответствующим названием, через консоль пишешь javac -cp джарки название.java, где джарки это список джарок с импортированными классами через ; потом смотришь ошибки, исправляешь, и снова javac. потом можешь вносить изменения и снова компилировать.
хм. Спасибо. Сейчас так и попробую сделать. А на счет Eclipc-а не знаешь? мб есть возможность сделать это через визуальную часть?
 
хм. Спасибо. Сейчас так и попробую сделать. А на счет Eclipc-а не знаешь? мб есть возможность сделать это через визуальную часть?
можно просто создать новый проект, в нем создать нужный класс, а используемые джарки подключить как библиотеки
 
декомпилируешь нужный класс jd-gui, пихаешь содержимое в .java файлик с соответствующим названием, через консоль пишешь javac -cp джарки название.java, где джарки это список джарок с импортированными классами через ; потом смотришь ошибки, исправляешь, и снова javac. потом можешь вносить изменения и снова компилировать.
Вот не до конца все понял. Я декомпильнул файлик. Теперь у меня есть bkg.class в нем есть такое кол-во импортов, их всех надо вписывать в cmd при запросе?
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import cpw.mods.fml.client.GuiModList;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;
 
В результате :

Cmd -> javac -cp import com.google.common.base.Strings;
import com.google.common.collect.Lists;
import cpw.mods.fml.client.GuiModList;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;
import net.minecraft.client.Minecraft;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU; bkg.java
 
нет, нужно записать туда имена джарок, в которых эти классы лежат и которые не входят в стандартный набор библиотек. то есть minecraft.jar;lwjgl.jar и так далее.
 
Будь прокляты мои познания в яве. Вроде бы что-то читал да и делал.
Как узнать, какие джарки использует под себя, скажем bkg.java ?
 
Будь прокляты мои познания в яве. Вроде бы что-то читал да и делал.
Как узнать, какие джарки использует под себя, скажем bkg.java ?
это по импортируемым классам определяется. классы, лежащие в java.* (и еще некоторые) лежат в стандартных библиотеках, для них ничего не надо писать, по остальным кассам просто смотришь в какой джарке они лежат и вписывешь ее.
пропиши туда все из папки bin, этого точно хватит чтобы покрыть весь импорт
 
Назад
Верх