Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Принудительная компиляция в Java


Автор: Viroman 9.2.2010, 19:27
Добрый день форумчане, возник очень трепещущий вопрос, как скомпилировать исходник принудительно не имея всех запрашиваемых библиотек. Просто чтобы компилятор скомпилил исходник и не трепыхал мозги, что типа та и та библиотека отсутствуют во время компиляции. Именно такой подход мне очень нужен, буду вам весьма признателен! 

Автор: ivanovpv 9.2.2010, 19:44
В лобовую это невозможно ибо компилятор должен знать структуру класса который лежит в либе. Скажем вы пишете что будете вызывать метод foo() класса MyFoo - а библиотеки нет. Каким образом компилятор догадается, что метод foo() есть или если и есть то у него именно такая сигнатура? Так что без библиотеки .class файла вы не получите.

С другой стороны вы видимо просто хотите понимать синтаксически правильно написан код или нет? Если так то самый простой способ загрузить текст файла в какой-нить IDE (например NetBeans или Eclipse или Idea) и он вам сразу же покажет где у вас синтаксические косяки. 

Автор: Viroman 9.2.2010, 20:07
Переформирую вопрос, знаком ли вам хороший декомпилятор джава? Хороший, имею ввиду добротный, который верой и правдой мог бы действительно в исходники декомпилировать джава код, чтобы потом его перекомпилировать?!

Автор: MaxPayneC 9.2.2010, 21:13
Что-то похожее на то, что вы описали, можно сделать с помощью maven - указать зависимости, без которой вы хотите компилировать проект, scope-ы:

Цитата
# provided
This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.
# runtime
This scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath.

Автор: jk1 9.2.2010, 21:22
Цитата

знаком ли вам хороший декомпилятор джава?

http://www.java-decompiler.com/
Сам я предпочитаю http://members.fortunecity.com/neshkov/dj.html

Автор: Viroman 9.2.2010, 22:46
DJ я уже пробовал, безрезультатно, там количество ошибок зашкалило за сотню и дальше уже не считалось.. А вот например JD GUI сумел взобраться на другой уровень, 6 ошибок и 20 предупреждений, посмотрим, на  что руки годятся

Автор: Viroman 9.2.2010, 23:58
Неа, ничего не помогает, а всего лишь нужно один файлик подправить :( неужели в таких ситуациях ничего с джавой поделать нельзя? Эксперты, кто что знает, реально помощь нужна, помогите. Может напрямую джава код переделывать...

Автор: dobrolub 10.2.2010, 01:19
ломаешь что-то? ну прикрепи хоть файл smile да расскажи что надо подправить.

Автор: serger 10.2.2010, 08:41
Цитата(dobrolub @  10.2.2010,  03:19 Найти цитируемый пост)
ломаешь что-то? ну прикрепи хоть файл smile да расскажи что надо подправить.

ломки обсуждаются не на этом форуме
Viroman, поподробнее распишите проблему, а то , действительно, какие нить органы заинтересуются вашей деятельностью.. телепаты, как всегда, в отпуске.. smile 

Автор: ivanovpv 10.2.2010, 20:41
Цитата(Viroman @  9.2.2010,  20:07 Найти цитируемый пост)
Переформирую вопрос, знаком ли вам хороший декомпилятор джава? Хороший, имею ввиду добротный, который верой и правдой мог бы действительно в исходники декомпилировать джава код, чтобы потом его перекомпилировать?! 


Ну дык все просто: берем объектники которые надо разобрать, засовываем все хозяйство в идешник, приплюсовываем к нему какую-нить голову, чтобы нормально собиралось. Далее через идешник начинаем трассировку исполнения - стартуем с головы. Доходим до вызова метода в объектнике. Хороший идешник нормально декомпильнет ее и вы увидите в дебаггере исходник класса. Исходник копируем в отдельный файл, который правим как надо, потом  удаляем объектник декомпиленного класса, вместо нее подсовываем исходник - опять же собираем и все. Главное, чтобы объектник был не под обфускатором (хотя даже исходник под обфускатором можно понять).

Автор: batigoal 12.2.2010, 10:56
Цитата(ivanovpv @  10.2.2010,  21:41 Найти цитируемый пост)
Хороший идешник нормально декомпильнет ее и вы увидите в дебаггере исходник класса.

Какой, например? IDE обычно не идут дальше отображения сигнатур публичных свойств, никаких кишок они не покажут.

Автор: Viroman 12.2.2010, 20:30
Всем человеческое спасибо, взломом это не является, а наоборот исправление ошибок, программа и так фришная, но она имелала кое исправления другими людьми, которые надо было в другую версию перенять, естественно это всё дело было неизвестно, декомпиляции толково не поддавалось, а руками править нет ни нормального опыта, ни недобросовестного ума. В общем нашёл исходники, подсмотрел и исправил!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)