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

319
Visualizações
Java NoSuchMethodError cuando existe el método

Estoy haciendo referencia PlayerUtil.getMovementSpeed(player); en mi clase Speed y en mi clase PlayerUtil, tengo el método definido como:

 public static double getMovementSpeed(Player player) { //my code here }

Pero cada vez que se hace referencia al método getMovementSpeed en mis otras clases, arroja este error:

 java.lang.NoSuchMethodError: net.Swedz.util.PlayerUtil.getMovementSpeed(Lorg/bukkit/entity/Player;)D

Pensé que podría ser que Eclipse estaba exportando incorrectamente, pero lo reinicié y lo intenté de nuevo sin éxito.

EDITAR: Intenté descompilar el contenedor exportado, y el método public static double getMovementSpeed(Player player) existe en el contenedor exportado.

EDITAR: mi amigo también tiene un problema similar y está usando IntelliJ, por lo que Eclipse no es el problema.

EDITAR: Definición de clase para PlayerUtil:

 package net.Swedz.util; public class PlayerUtil implements Listener { //getMovementSpeed is defined in here }

Definición de clase para Velocidad:

 package net.Swedz.hack.detect.move; public class Speed implements Hack, Listener { //my detection methods and method containing PlayerUtil.getMovementSpeed(player); }

SOLUCIÓN: Descubrí por mi cuenta que tenía clases en conflicto entre dos complementos en mi servidor. Tenía un jar con net.Swedz.util.PlayerUtil y otro con net.Swedz.util.PlayerUtil ambos con contenido diferente. ¡Agregué el nombre de mi proyecto en minúsculas después de net.Swedz y parece haberlo solucionado!

¡Gracias!

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

0

Este es un problema muy simple de solucionar. ha usado ese método y pudo compilar esa clase que usa este método.

eso significa que en el momento de la compilación, encierra la clase PlayerUtil que tiene este método.

Pero el cargador de clases en tiempo de ejecución ha cargado la clase PlayerUtil que no contiene este método. ahora lo que tiene que hacer es averiguar de dónde se ha cargado esa clase (en tiempo de ejecución)

si puede recrear el problema mientras se ejecuta usando eclipse/IDEA, siga estos pasos. (si se ejecuta en el servidor de aplicaciones o en una aplicación independiente, inicie el servidor de aplicaciones o la aplicación con la depuración habilitada y puede realizar la depuración remota desde su IDE).

  1. coloque un punto de interrupción donde se lanzó la excepción (donde llama a este método).
  2. comienza a depurar, llegará al punto de interrupción.
  3. luego evalúe esta expresión PlayerUtil.class.getResource("PlayerUtil.class")

4. Puede encontrar la ruta desde donde se cargó la clase.

ahora tiene dos opciones, descompilar la clase y verificar si ese método es este (mismo tipo de retorno, mismo nombre, mismos argumentos).

o en depuración, puede evaluar PlayerUtil.class.getDeclaredMethods() para averiguarlo.

Entonces puede resolver el problema rectificando las entradas de la ruta de clase si se cargó desde un lugar incorrecto.

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