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

使用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日

悬赏问题

  • ¥100 求购一套带接口实现实习自动签到打卡
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?
  • ¥15 Ubuntu20.04.4.LTS系统如何下载安装VirtualBox虚拟机?