Я нашел странный вопрос с java8:Java8 затмение компилятор ошибка
В методе класса у меня есть следующий код:
int id;
...
new Key<Integer>(id)
Чтобы удалить «лишние спецификации аргументов типа» как ключ, Я пишу:
new Key<>(id)
Тогда я получаю
java.lang.VerifyError: Bad type on operand stack
Во время выполнения ... !!!! Причина: компилятор пропускает заменить ИНТ на целом число ...
Надеется, что это поможет ребятам, как я, которые были укомплектовать dispointed такой среды выполнения Exeption с их программой просто переходя от java7 к java8 ....
версия: Luna Release (4.4.0) Сложение ID: 20140612-0600
Java версия "1.8.0_25" Java (TM) SE Runtime Environment (сборка 1.8.0_25-B17) Java HotSpot (TM) 64-разрядная серверная VM (сборка 25.25-b02, смешанный режим)
ADDED
Вот полный простой пример:
package bug;
public class Bug {
public static void main(String[] args) {
Bug.class.getConstructors();
System.out.println("test ok");
}
public Bug() {
BugCondition("", new Key<Integer>(1));
//BugCondition("", new Key<>(1));
}
public static final <C extends Object> void BugCondition(C test, Key<?> key) {
}
public class Key<K> {
public Key(K value) {
}
}
}
Кажется, вопрос пришел от дженериков (замените C на строки):
public static final <C extends Object> void BugCondition(C test, Key<?> key) {
}
что подпись ключа класса и его конструкторов? – dkatzel
См. Http://examples.javacodegeeks.com/java-basics/exceptions/java-lang-verifyerror-how-to-solve-verifyerror/ по причинам, почему JVM выбрасывает 'VerifyError' – dkatzel
Пожалуйста, покажите полный и компилируемый пример, который воспроизводит проблему. – assylias