Autor wpisu: batman, dodany: 23.01.2011 08:00, tagi: php
Programiści PHP mają do dyspozycji dwa kombajny od brudnej roboty. Są to Eclipse oraz NetBeans (kolejność alfabetyczna). Oba narzędzia oferują zbliżone możliwości, więc wybór tego właściwego zależy głównie od aktualnego stanu umysłu, estetyki oraz widzi-mi-się osoby wybierającej. W moim przypadku padło na Eclipse. I wszystko byłoby w należytym porządku, gdyby nie drobny szkopuł – mój Eclipse mnie nie lubi. Nie ważne skąd go ściągnę, gdzie rozpakuję, jak skonfiguruję i tak za kilka dni (maksymalnie kilka tygodni) odmówi posłuszeństwa.
Nie inaczej było tym razem. Związki zawodowe skupione wokół DLTK stwierdziły, że za dużo pracują i ogłosiły strajk. Pół biedy gdyby ogłosiły strajk włoski. Przynajmniej Eclipse działałby jak powinien. Ale nie. Zabarykadowali się w swoim workspace i ani myślały wracać do pracy. Z drobnymi poprawkami jakoś sobie radziłem (ale żeby zabrać nawet podpowiadanie składni klas z tego samego pliku? skandal!), jednak większe zmiany powodowały iż poczułem się jak 5 lat temu – kolorowanie składni, manual i jedziemy.
Oburzony takim obrotem spraw, zakasałem rękawy i zacząłem szukać rozwiązania. Negocjacje ze strajkującymi zacząłem standardowo (jeszcze nie wiedziałem, że chodzi o DLTK) od sprawdzenia co się dzieje w pliku .project. Zawiera on podstawowe informacje o typie projektu oraz uruchamianych builderach. Typowy plik powinien wyglądać podobnie do tego.
<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>Projekt</name> <comment></comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.wst.validation.validationbuilder</name> <arguments> </arguments> </buildCommand> <buildCommand> <name>org.eclipse.dltk.core.scriptbuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.php.core.PHPNature</nature> </natures> </projectDescription>
I tak też wyglądał. Czyżby strajk był poważniejszy niż to początkowo zakładałem? Nic to, szukam dalej. Pora na plik .buildpath.
<?xml version="1.0" encoding="UTF-8"?> <buildpath> <buildpathentry kind="src" path=""/> <buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/> </buildpath>
Jednak i tym razem wszystko wygląda poprawnie.
Zaniepokoiłem się nie na żarty i zacząłem układać czarne scenariusze od konieczności ponownej instalacji i konfiguracji wtyczek, na wywaleniu wszystkiego w diabły i zainstalowania NetBeansa. Wtem spowiło mnie ciepłe białe światło i szara istota z dużą głową z wielkimi czarnymi oczami wyszeptała mi do ucha – “sprawdź logi Eclipse’a”.
To było to. W katalogu workspace znajdują się metadane Eclipse’a, a między nimi plik .log, będący niemym świadkiem wszystkich Eclipsowych świństw. Wyczyściłem jego zawartość (uprzednio przygotowując kopię zapasową), a następnie zacząłem podglądać na żywo co się w nim dzieje. Uruchomiłem Eclipse i udawałem, że pracuję. Strajkujący od razu naprostowali łamistrajków. Na szczęście pozostał po tym haniebnym zdarzeniu ślad w postaci wyjątku zgłoszonego przez Javę. Winowajcą był plik model.index.db chowający się w katalogu C:\Users\batman\workspace\.metadata\.plugins\org.eclipse.dltk.core.index.sql.h2. Wykonałem kopię zapasową, usunąłem winowajcę i ponownie zbudowałem projekt. Bingo! Eclipse znowu podpowiada składnię! Kolejny raz korporacja pokonała pracujący w pocie czoła lud.