Czy jest możliwe po kompilacji plików wrócić do plików źródłowych?
tak.
Istnieje taka możliwość jednakże jest to "nieopłacalna" czynność. Ale jeżeli już Cię to interesuje zaglądnij do tematu Ważne Linki - tam podałem ostatnio linka do programu który to zrobi :)
Wiesz może jak to zrobić? Bo bym chciał od razu cały dp na pliki źródłowe przerobić. Trzeba zrarować i poźniej cos w tym programie dac?
plik *.jar rozpakowywujesz winrarem.
Póżniej programem DJ java decompiler sobie oglądasz pliki *.class - można całego core "dekompilowac" ale to wymaga duuużo czasu oraz nie opłaca się :P
Ok dekomilacja udaje się tylko teraz nie mogę po zmianie zamienić pliku .java na .class
bo ponowna kompilacja jest nie możliwa :)
Kurde ale lipa czyli nie ma możliwośc wprowadzenia zmian w jakims pliku?
nie ma - dekompilacja służe jedynie reverse engeringu czyli sprawdzenia na jakiej zasadzie działa program w celach uzyskania informacji potrzebnych przy póżniejszym zastosowaniu we własnej aplikacji :P
To na czym polega kompilacja ze źródła nightly?
masz żródła i je sobie kompilujesz xD
Nom ale pliki źródłowe są też java
Cyat Luna:
CytatKazdy program, jakiego uzywamy (a wiec np notatnik, czy word, czy gra L2 albo serwer do L2, czy nawet system operacyjny) ma poczatek w kodzie zrodlowym.
Kod zrodlowy jest to zwykly "dokument" napisanyh przez programiste, w jezyku dla niego zrozumialym.
(Dlatego w kazdym jezyku mamy tak wiele mowiace slowa jak if, while, function, return, goto itd). Jednak zeby jezyk ten byl zrozumialy dla komputera, musi byc w pelni wyspecyfikowany i jednoznaczny. Ogolnie mozna taki jezyk napisac jezykiem programowania.
Po napisaniu juz kodu programu przez programiste moga dziac sie rozne rzeczy, zalezne od tego jaki jezyk sie wybralo:
1) Napisany przez nas kod moze byc od razu wykonany przez jakies srodowisko, bez kompilacji. Jezyki takie nazywa sie jezykami interpretowanymi i zalicza sie do nich np PHP, ktore modul php czyta w takiej formie jak zostaly napisane i od razu wykonuje.
2) Wiele jezykow jest kompilowanych przez kompilator do kodu natywnego (np c, c++). Kod natywny jest juz "czysta" forma programu ktora od razu moze byc wykonana. Takie jezyki charakteryzuja sie tym, ze np skompilowane na windowsie nie zadzialaja na linuxie (pomijajac rozne wine).
3) Jezyki kompilowalne do kodu posredniego (np Java). To jest to co znajduje sie w plikach .class. Kompilator javy (javac) kompiluje kod zrodlowy z plikow .java do tzw bytecode'u, ktory mozna okreslic jako "pseudoassembler" jednak zaden procesor nie wykona takiego kodu od tak. Wymagana jest do tego maszyna wirtualna. Dzieki obecnosci maszyny wirtualnej, pliki .java skompilowane np pod windowsem (do .class) beda mogly byc uruchomione zarowno na windowsie, linuxie, czy solarisie.
Maszyna wirtualna odczytuje pliki .class i (w przypadku javy) kompiluje je do kodu natywnego, juz pod system na ktorym pracuje.
Pytasz jak otworzyc pliki .class - ty nie masz najmniejszej potrzeby ich otwierac, one nie sa przeznaczone dla ciebie, tylko dla maszyny wirtualnej.
Mozesz conajwyzej je uruchomic.
Czego maszyna wymaga od programu, zeby mogla go uruchomic:
W javie wszystko jest obiektem. Nie mozna (tak jak w c) stworzy pliku i w niej tak po prostu zdefiniowac metody main().
W javie glowna klasa (Np nazywajaca sie GameServer) musi zawierac statyczna metode (o tym co to jest metoda i co to znaczy ze jest statyczna, mam nadzieje ze sobie poczytasz) o nazwie main().
Po skompilowaniu pliku GameServer.java do GameServer.class
Wystarczy ze wpiszesz w konsoli:
java GameServer
wtedy maszyna wirtualna skompiluje bytecode do kodu natywnego, nastepnie zaladuje klase GameServer i bedzie probowala odpalic statyczna metode main().
To tak na wstep.
To Ci rozwieje wątpliwości i pytania
*.java -> kompilacja (np javac) -> *.class
*.class -> dekompilacja -> *.java
Dekompilacja zwraca najczesciej kod malo czytelny, niezrozumialy. Moze zamiast dekompilowac latwiej bedzie sciagnac kod zrodlowy z SVN?
Maślan: Może zrozumie :P
Właśnie w tym problem że ten team nie udostępnia plików z svn
No ok to tak rozpakowałem plik jar otworzyłem plik enterworld.class i chcialem zmienić powitanie "Welcome to the World of Lineage II". Nom i jak zmieniam to wyskakuję mi żeby zapisać ten plik i zapisuje w postaci java.
zrozum że kodu z dekompilacji nie zkompilujesz w pełni działającą aplikację.
Podaj nazwe tego teamu to zaraz bedziesz miał Source code
www.l2rt.ru
Ja nie mogłem nigdzie znaleźć ich plików źródłowych
kolego nie mozesz używać znanych serwerpacków a nie rosyjskich ? :P
No dokładnie. Jedyne chyab słowo, które tam zrozumialem, to Lineage 2 xD
Cytat: Soul w Listopad 11, 2008, 05:35:47 PM
No dokładnie. Jedyne chyab słowo, które tam zrozumialem, to Lineage 2 xD
a ja jeszcze developers :P
"RusTeam :: LineAge II Dev Server", "KTO", "Skin designed by Soi Edit by Zloctb (Red Z Group)" i "Copyright ©2000 - 2008, Jelsoft Enterprises Ltd." xD
Cluster nawet imponujący...
Dobra. Nie róbmy offtopa ;)
Właśnie zależy mi na ich plikach ale nie ma tam nigdzie odnośnika na forum do svn. Chce edytować ten napis "Welcome to the World the Lineage II"
Bez plików źródłowych tego nie zmienisz niestety.
a Gher dlaczego nie napiszesz PM do jednego z adminów z pytaniem czy udostępnią Ci svn ?
Soul: tym bardziej, że rozumiesz rosyjski xD
Trudno po ang napisać Gher ? :P Napewno zrozumieją heheh
Napisali mi że nie udostępniaja. Znacie może jakieś teamy które dalej zajmują się Interlude i posiadają svn?
Z reguły jest tak, że na svnie masz każdą kronikę, jaką zajmował się dany team.