Bal*_*ala 5 java rule-engine drools java-7
当我将项目移动到java7时,Drools在init进程中开始抛出RuntimeDroolsException异常.当我进一步挖掘时,我发现当它验证java方言时会发生这种情况.
问题是:Drools 5.1.1将"java.version"系统属性与LANGUAGE_LEVELS进行比较以验证它.LANGUAGE_LEVELS是直到1.6的java版本的硬编码列表
In org.drools.rule.builder.dialect.java.JavaDialectConfiguration,
public static final String[] LANGUAGE_LEVELS = new String[]{"1.5", "1.6"};
Run Code Online (Sandbox Code Playgroud)
我不想改变源代码.所以我添加了以下作为绕过java方言验证的解决方法.
Properties properties = new Properties();
properties.setProperty( "drools.dialect.java.compiler.lnglevel","1.6" );
PackageBuilderConfiguration cfg =
new PackageBuilderConfiguration( properties );
KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(cfg);
Run Code Online (Sandbox Code Playgroud)
除了编辑源代码之外,还有更好的方法吗?
PS:Drools 5.1.1是drools的最新生产版本
小智 6
当您仍想使用时Drools 5.1.1(切换到更高版本并不总是很容易,因为规则不再编译),这可能是另一种非编程的解决方法.
在META-INF/drools.packagebuilder.conf您可以添加以下属性:
drools.dialect.java.compiler = ECLIPSE
drools.dialect.java.lngLevel = 1.6
drools.dialect.java.compiler.lnglevel = 1.6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13214 次 |
| 最近记录: |