无法创建JexlEngine对象 [英] Can't create JexlEngine object

查看:158
本文介绍了无法创建JexlEngine对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了以下课程:

import org.apache.commons.jexl2.*;

public class NelderMead {
    // контсанты
    private static int      M = 3;
    private static double   E = 0.005;
    private static double   A = 1.000;
    private static double   B = 0.500;
    private static double   Y = 2.000;

    // переменные
    private JexlEngine jexl = new JexlEngine();
    private Expression func;
    private String funcString = "";
    private MapContext[] iterations;

    public NelderMead(){
        this.jexl = new JexlEngine();
    }

    public NelderMead(String funcString){
        this.jexl = new JexlEngine();
        this.setFunc(funcString);
    }


    public void setFunc(String funcString){
        this.funcString = funcString;
        this.func = this.jexl.createExpression(funcString);
    }

    public double funcEval(MapContext args){
        return (Double) this.func.evaluate(args);
    }

    public boolean checkCriterian(){
        return true;
    }
}

但是我创建了这个类的对象我有foolowing错误:

But the I create object of this class I have the foolowing error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.commons.jexl2.JexlEngine$UberspectHolder.<clinit>(JexlEngine.java:121)
    at org.apache.commons.jexl2.JexlEngine.getUberspect(JexlEngine.java:205)
    at org.apache.commons.jexl2.JexlEngine.<init>(JexlEngine.java:182)
    at org.apache.commons.jexl2.JexlEngine.<init>(JexlEngine.java:170)
    at NelderMead.<init>(NelderMead.java:22)
    at Test.main(Test.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 6 more

在构造函数的第一行(当创建一个对象时JexlEngine):

on first line of the constructor (when create an object of JexlEngine):

public NelderMead(String funcString){
    this.jexl = new JexlEngine();
    this.setFunc(funcString);
}

你能帮助我 - 为什么这段代码会导致错误?

Could you help me - why this code cause the errors?

PS
我使用.jar文件来使用这个库。

PS I use .jar file to use this lib.

推荐答案

您需要在运行时在类路径中提供 commons-logging jar

You need to make commons-logging jar available in classpath at runtime

这篇关于无法创建JexlEngine对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆