Mam plik klasy i kiedy jestem na stronie internetowej następujący komunikat pochodzi:Niezgodny wartość magia 1768713317 w klasie pliku
Niezgodna wartość magiczną 1768713317 w pliku klasy „widmo”.
Co oznacza ta wartość magiczna? Proszę o pomoc :)
Mam plik klasy i kiedy jestem na stronie internetowej następujący komunikat pochodzi:Niezgodny wartość magia 1768713317 w klasie pliku
Niezgodna wartość magiczną 1768713317 w pliku klasy „widmo”.
Co oznacza ta wartość magiczna? Proszę o pomoc :)
Pierwsze cztery bajty .class
pliku binarnego (skompilowany Java) powinny być 0xCAFEBABE
- tzw wartość magiczną.
W twoim przypadku to 1768713317
lub 0x696C6C65
lub "ille"
(ille ... gal?) W formacie ASCII. Najprawdopodobniej JVM próbuje otworzyć plik myśląc, że jest to kod bajtowy, podczas gdy w rzeczywistości jest to plik tekstowy. Być może klasa miała zostać pobrana, ale serwer zwrócił błąd?
Przepraszamy za to pytanie, ale co znaczy ille? Gdzie muszę dodać magiczną wartość? – narf
@narf: Oznacza to, że niektóre JVM próbuje załadować klasę, która nie jest naprawdę skompilowaną Javą, ale prawdopodobnie jakiś plik tekstowy. Jeśli zrobisz zdjęcie JPG i zmienisz jego rozszerzenie na .EXE, najprawdopodobniej dostaniesz też jakiś błąd. Przepraszamy, ale Twoje pytanie jest zbyt nieprecyzyjne. Czy możesz podać więcej szczegółów? –
Magiczna liczba to pierwsze 4 bajty w każdej skompilowanej klasie Java. Jest to struktura skompilowane klasy Java:
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
„magia” zawsze powinna być równa: 0xCAFEBABE
. Mówi JVM: "Hej ty! Jestem klasą Java, możesz wykonać mój kod!". Gdy JVM odczyta plik, a numer magiczny nie jest prawidłowy, nie wykona go.
Gdzie to znalazłeś? –
jesteś na jakiej stronie? co robi plik klasy na stronie? – gefei
Strona nie jest w tej chwili publicznie dostępna. Czy mogę wysłać wiadomość e-mail z adresem URL? – narf