Hadoop错误解决

public RulesEngine2(String rulesFile) throws RulesEngineException {
        super();
        try {
             PackageBuilderConfiguration kcfg = new PackageBuilderConfiguration();
            JavaDialectConfiguration javaConf = (JavaDialectConfiguration) kcfg
                    .getDialectConfiguration("java");

            //不知道是干吗用的
            javaConf.setCompiler(JavaDialectConfiguration.JANINO);
  

            KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
                    .newKnowledgeBuilder(kcfg);

            kbuilder.add(ResourceFactory.newFileResource(rulesFile),
                    ResourceType.DRL);
            Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
            KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
            kbase.addKnowledgePackages(pkgs);
            ksession = kbase.newStatefulKnowledgeSession();
        } catch (Exception e) {
            throw new RulesEngineException(
                    "Could not load/compile rules file: " + rulesFile, e);
        }
    }


二、 Janino 简介
引用:http://tech.techweb.com.cn/archiver/tid-190424.html
       Janino 是一种内嵌的开源Java编译器。Janino并不是一种提供给开发人员编译程序的编译器,而是Java程序在运行时编译Java代码的编译器。
       对使用过JSP的Java开发人员来说,Java源代码(通常内嵌于 JSP中)动态编译成类文件是很熟悉的技术。但却未必知晓此技术的复杂性。而造成它比较笨拙的原因在于需要安装JDK(非JRE)。由于JDK并非免费, 于是又出现了license的问题。此外,对于不同的平台,需进行不同的平台配置并部署相应的类文件。对简化版的程序也同样需要复杂的操作。
       尽管存在以上的问题,一些开源内库如Jasper仍基于JDK,且能提供很好的程序执行功能。基于Java的构建工具Ant同样面临在编译Java代码时需克服过于复杂的问题。基于以上所述,动态编译Java代码通常被认为是没有办法的办法,且在实际应用中表现欠佳。
 
       Janino 采用如下的方式来解决这些问题:
1.     Janino如同普通的应用程序一样,运行在JVM上,而不是将编译的工作间接转交给javac(或是等同的Java编译器)来完成。同时也不需要额外的配置或安装JDK。
2.  由于Janino直接从JVM获得classes类文件,而不是通过应用程序获取class文件和.jar文件。这意味着无需考虑权限问题或是构建路径的配置。
3          Janino提供一种简单易用的方式来编译表达、脚本和classes类文件。开发人员无需关心加载动态生成代码的技术细节,因为Janino自动实现了它。在最简单的层面,传递一个包含Java代码的字符串即可返回一个对象。
Janino被更广范的应用于那些比较复杂、杂乱且与平台相关的Java应用程序的源码编译。Janino通过动态编译代码,从而提高了程序的性能。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值