Dziś rano napisałem kilka programów ćwiczeniowych do mojej certyfikacji java i zauważyłem, że źle wpisałem nazwę pakietu, więc nie pasowało to do podkatalogu, w którym znajdował się plik java. Skompilowałem kod spodziewając się błędu, ale wszystko skompilowałem plik - nawet ostrzeżenie.Czy pakiety nie muszą być zgodne z podkatalogami, w których znajduje się plik java?
I googled trochę, a większość stron czytałem powiedział, że nazwa pakietu musi odpowiadać podkatalogu. Moje doświadczenie pokazuje, że tak nie jest.
Kiedy próbowałem uruchomić program, nie działało, ponieważ plik .class znajdował się w niewłaściwym katalogu. Przeniosłem go do odpowiedniego katalogu i dostał ten błąd:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sample/directory
/doesnt/even/exist/OtherPackageMemberModifiers (wrong name: com/sample/chap01/O
therPackageMemberModifiers)
Więc co myślę, widzę, że jest kod Java skompilować jeśli pakiet i podkatalogu nie zgadzają się, ale nie nie wydaje się być sposobem na uruchomienie kodu, jeśli to zrobisz. Czy to jest poprawne?
zjawisko, że ścieżka pakiet i ścieżka katalogu są zbędny pokazuje swoją paskudną głowę. Kompilator miałby prawo do wydania błędu. Jednak nie będzie to 100%: package src.main.java.com.sample ... lub package com.sample. ... nadal nie wzbudzą żadnego błędu. Javac musiałby być oparty na katalogach (-d) i bazuje na plikach. –