fids 2024-05-21 15:46 采纳率: 38.5%
浏览 50

使用MVEL注入自定义的计算方法

使用MVEL注入自定义的计算方法
代码如下:

public static void main(String[] args) {
        ParserContext parserContext = new ParserContext();
        parserContext.addImport("MyMath", MyMath.class);
        Object eval = MVEL.eval("MyMath.max(1,2)",parserContext);
        System.out.println(eval);
    }

报错[Error: could not access: MyMath2; in class: org.mvel2.ParserContext]
但是Math为什么可以?

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-05-21 15:46
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题:

    您想要解决的问题是如何在Java中使用MVEL表达式语言框架注入自定义的计算方法,并且遇到了一个错误,导致无法访问自定义类MyMath

    问题出现原因:

    问题出现的原因是MVEL在解析表达式时无法访问到MyMath类。这可能是因为MyMath类没有被正确导入到MVEL的解析上下文中,或者MyMath类本身存在问题。

    问题解决方案:

    1. 确保MyMath类定义正确,并且包含一个静态的max方法。
    2. 检查MyMath类是否在项目的类路径中。
    3. 确保addImport方法的参数是正确的,即类名和类对象的映射。

    提供代码:

    以下是修改后的代码示例,假设MyMath类已经正确定义:

    import org.mvel2.MVEL;
    import org.mvel2.ParserContext;
    
    public class Main {
        public static void main(String[] args) {
            ParserContext parserContext = new ParserContext();
            // 确保MyMath类已经正确导入
            parserContext.addImport("MyMath", MyMath.class);
            
            // 确保表达式正确引用了MyMath类
            String expression = "MyMath.max(1, 2)";
            
            try {
                Object eval = MVEL.eval(expression, parserContext);
                System.out.println(eval);
            } catch (Exception e) {
                System.err.println("Error evaluating expression: " + e.getMessage());
            }
        }
    }
    

    代码运行方式:

    • 确保您有Java开发环境(如JDK)。
    • 将上述代码保存为.java文件。
    • 编译并运行该Java程序。

    代码预期运行结果:

    如果MyMath类定义正确,并且max方法可以正确执行,预期的输出将是MyMath.max(1, 2)方法的返回值。

    推荐相关链接:

    请注意,上述代码和链接仅供参考,具体实现可能需要根据您的项目环境和需求进行调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月21日