Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

578
Visualizações
JDK 17: la declaración de cambio provoca java.lang.VerifyError: tipo incorrecto en la pila de operandos

Acabo de probar JDK17 en Eclipse 2021-09 para que falle con un java.lang.VerifyError , que no fue muy útil en sí mismo. Lo rastreé hasta una declaración de cambio, que recibe un valor extraído de un Map u otro tipo genérico. Si utilizo una variable local en la declaración de cambio, todo funciona según lo previsto.

Código de prueba:

 import java.util.HashMap; import java.util.Map; public class SwitchFail { public static void main(String[] args) { //doesnt work Map<Integer, String> stringMap = new HashMap<>(); stringMap.put(1, "Test"); switch(stringMap.get(1)) { } //works String plainString = "Test"; switch(plainString) { } } }

Esto arroja el siguiente error:

 Error: Unable to initialize main class SwitchFail Caused by: java.lang.VerifyError: Bad type on operand stack Exception Details: Location: SwitchFail.main([Ljava/lang/String;)V @33: invokevirtual Reason: Type 'java/lang/Object' (current frame, stack[0]) is not assignable to 'java/lang/String' Current Frame: bci: @33 flags: { } locals: { '[Ljava/lang/String;', 'java/util/HashMap', 'java/lang/Object' } stack: { 'java/lang/Object' } Bytecode: 0000000: bb00 1059 b700 124c 2b04 b800 1312 19b9 0000010: 001b 0300 572b 04b8 0013 b900 2102 0059 0000020: 4db6 0025 57b1

No probé otro JDK entre el 11 y el 17 todavía. Los interruptores obtuvieron algunas funciones nuevas entre esas versiones, por lo que podría ser eso. Tal vez sea un problema en Eclipse JDT o en mi JDK local, por lo que cualquier intento de reproducir este error en otra configuración o IDE sería excelente. Probado en OpenJDK (compilación 17+35-2724) para macOS.

Editar: También sucede en

 List<String> stringList = Arrays.asList("Test"); switch(stringList.get(0)) {}

Lo más probable es que sea un problema con el nuevo JDT para Java 17 o mi instalación local.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Es un problema con su Eclipse, no con Java-17 en sí. Java-17 se lanzó ayer. Espere un tiempo hasta que los IDE se actualicen para admitir Java-17.

Manifestación:

 import java.util.HashMap; import java.util.Map; public class SwitchFail { public static void main(String[] args) { Map<Integer, String> stringMap = new HashMap<>(); stringMap.put(1, "Test"); switch (stringMap.get(1)) { default: System.out.println("Hello"); } String plainString = "Test"; switch (plainString) { default: System.out.println("Hi"); } } }

Una ejecución de muestra:

 [~/Desktop]: java SwitchFail.java Hello Hi

Prueba con frasco:

 [~/Desktop/java17]: javac SwitchFail.java [~/Desktop/java17]: jar -cvf java17test.jar . added manifest adding: SwitchFail.java(in = 379) (out= 212)(deflated 44%) adding: SwitchFail.class(in = 920) (out= 546)(deflated 40%) adding: .DS_Store(in = 6148) (out= 178)(deflated 97%) [~/Desktop/java17]: java -cp java17test.jar SwitchFail Hello Hi

El JDK en mi sistema:

 [~/Desktop/java17]: java -version openjdk version "17" 2021-09-14 OpenJDK Runtime Environment (build 17+35-2724) OpenJDK 64-Bit Server VM (build 17+35-2724, mixed mode, sharing)
over 4 years ago · Santiago Trujillo Relatório

0

Este fue de hecho un error en el JDT de Eclipse. Puedo confirmar que esto se solucionó después de que se cerró el error 576093 . Hay una actualización disponible.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda