3 votes

NoSuchMethodError d'une classe mère tierce

Nous obtenons un NoSuchMethodError dans le runtime. Je veux juste savoir si nous obtenons cette erreur parce que la classe parente n'est pas trouvée dans le classpath du serveur ou si la classe est trouvée mais périmée.

La raison pour laquelle je pose cette question est que le JRE vérifie la présence de la classe JEP pendant l'instanciation d'ExpressionEvaluator ou bien il ne vérifie que lorsqu'une méthode est invoquée qui, à son tour, appelle la méthode de la superclasse ?

import org.nfunk.jep.JEP;

/** TODO Explain this class */
public class ExpressionEvaluator extends JEP {

    public ExpressionEvaluator() {
    }
...
...

code client

public static boolean checkExpressionValidity(String ruleExpression) {
    ExpressionEvaluator evaluator = new ExpressionEvaluator(); // instantiation
    if (!(ruleExpression.contains(">") || ruleExpression.contains("<")
            || ruleExpression.contains("==") || ruleExpression.contains("!="))) {
        return false;
    }

    String ruleExpressionForValidation = ruleExpression.replaceAll(
            REGEX_FUNCTION_FINDER, "1");
    evaluator.parseExpression(ruleExpressionForValidation); // super class method.

4voto

mishadoff Points 6034

Le JRE vérifie-t-il la présence de la classe JEP lors de l'instanciation d'ExpressionEvaluator ?

Bien sûr, car lorsque la JVM crée une instance d'ExpressionEvaluator, elle exécute le constructeur parent

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X