我使用CLIPS JNI制作了一个CLIPS-JAVA项目,从JAVA调用CLIPS。

CLIPS代码包含一些打印输出语句,这些语句直接打印到Eclipse IDE的控制台。

但是,我希望此输出由Java中的字符串捕获,而不是打印到控制台输出。

最佳答案

在CLIPSJNI for CLIPS 6.4中,您可以使用内置路由器类之一捕获输出。

public static void main(String args[])
  {
   Environment clips;
   CaptureRouter theRouter;

   clips = new Environment();

   theRouter = new CaptureRouter(clips,new String [] { Router.STDOUT,
                                                       Router.STDERR,
                                                       Router.STDWRN } );

   try
     {
      clips.build("(defrule hello => (println \"Hello World\"))");
      clips.reset();
      clips.run();
      System.out.println("Output: " + theRouter.getOutput());
      theRouter.clear();
     }
   catch (Exception e)
     {
     }

   clips.deleteRouter(theRouter);
  }

09-25 22:14