Работа с dnsjava библиотеки, я столкнулся разочарование и запутанной проблемой, где я могу назвать Type.A
правильно, но вызывая Type.value(str)
бросает java.lang.NoClassDefFoundError
.java.lang.NoClassDefFoundError выброшенные для статического метода, но не для статического члена
System.out.println(org.xbill.DNS.Type.A); // works
if (org.xbill.DNS.Type.value(type) == -1) { // throws NoClassDefFoundError
/* logic */
}
Этот код выполняется из через jar
и других классов в банке используют библиотеку правильно.
Почему и как это могло произойти? Как я могу отладить это дальше?
Спасибо!
EDIT
Джон Скит был правильным. Друг показал мне, как использовать javap -c
и я изменил значение на что-то более отчетливое, Type.AAAA, которая имеет значение 28:
878: getstatic #116; //Field java/lang/System.out:Ljava/io/PrintStream;
881: bipush 28
Добавляет ли аргумент командной строки '-verbose: class' что-то? Часто, когда вы получаете эту ошибку, это другой класс, который отсутствует, тот, на который ссылается класс, который вы хотите загрузить. – biziclop
Не могли бы вы показать полную стек из NoClassDefFoundError? Эта ошибка возникает, по крайней мере, в трех разных ситуациях. –