我就是找不到解决方案...问题是:我有一个简单的主类,我在其中更改jvaBean的属性。然后,我想将javaBean的属性作为事实加载到我的JESS程序中。
我让它变得简单:// java main
public static void main(String[] args) {
Bean testbean = new Bean();
testbean.setName("test");
Rete engine = new Rete();
engine.batch("simple");
engine.run();
}// Bean类
public String name;
public String getName(){return name;}
public void setName(String name){this.name = name;}// JESS simple.clp
(defclass bean Bean)
(bind ?b (new Bean))
(definstance bean ?b)
(facts)当我启动java main时,javaBean并没有被断言。输出(facts)显示名称仍然为nil (null)
谁能帮帮我,谢谢!
丹尼
发布于 2013-11-26 07:23:00
您在这里创建了两个Bean对象;一个来自Java代码,另一个来自Jess代码。您设置了从Java创建的工作内存的name属性,但实际添加到工作内存的是从Jess创建的工作内存。您可以使用Jess或Java或两者的组合来完成此操作,但如果只需要一个对象,则只需创建一个。例如,您可以像这样在Java中完成所有这些操作:
public static void main(String[] args) {
Bean testbean = new Bean();
testbean.setName("test");
Rete engine = new Rete();
engine.defclass("bean", "Bean", null, false);
engine.definstance("bean", testbean, false);
engine.eval("(facts)");
}https://stackoverflow.com/questions/20203487
复制相似问题