Usually a DRL file defines a package. Java classes declared to be in a package with the same name are accessible in the DRL, without an import. This is also true for classes with package visibility.<br><br>However, evaluation of constraints using fields from classes with package visibility only fails at runtime. A couple of stack dumps are shown below.<br>
<br>I&#39;m not sure what the intended behaviour is, but if runtime execution is not possible, compilation ought to fail since the reason is known at compile time.<br><br>-W<br><br><br> Exception in thread &quot;main&quot; java.lang.IllegalAccessError: tried to access class anno.AnnIntRange from class org.drools.base.anno.AnnIntRange21716810$getAnnotation<br>
    at org.drools.base.anno.AnnIntRange21716810$getAnnotation.getValue(Unknown Source)<br>    at org.drools.base.ClassFieldReader.getValue(ClassFieldReader.java:86)<br>    at org.drools.rule.Declaration.getValue(Declaration.java:219)<br>
    at anno.Rule_ChkIntRange_0Eval1Invoker.evaluate(Rule_ChkIntRange_0Eval1Invoker.java:16)<br>    at org.drools.rule.EvalCondition.isAllowed(EvalCondition.java:114)<br>    at org.drools.reteoo.EvalConditionNode.assertLeftTuple(EvalConditionNode.java:173)<br>
    at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:197)<br>    at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:72)<br>
    at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:101)<br>    at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:197)<br>    at org.drools.reteoo.SingleLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:146)<br>
    at org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:154)<br>    at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)<br>    at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:193)<br>
    at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:191)<br>    at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:332)<br>    at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:293)<br>
    at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:905)<br>    at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:864)<br>    at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)<br>
<br>==================================================================<br><br>Exception in thread &quot;main&quot; org.drools.RuntimeDroolsException: [Error: could not access field: anno.AnnIntRange.method]<br>[Near : {... method.declaringClass ....}]<br>
             ^<br>[Line: 1, Column: 1]<br>    at org.drools.rule.ReturnValueRestriction.isAllowedCachedRight(ReturnValueRestriction.java:297)<br>    at org.drools.rule.VariableConstraint.isAllowedCachedRight(VariableConstraint.java:121)<br>
    at org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaConstraints.java:136)<br>    at org.drools.reteoo.JoinNode.assertObject(JoinNode.java:154)<br>    at org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:59)<br>
    at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:193)<br>    at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:191)<br>    at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:332)<br>
    at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:293)<br>    at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:905)<br>    at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:864)<br>
    at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)<br>    at anno.Main.insertAnnotations(Main.java:90)<br>    at anno.Main.makeFacts(Main.java:102)<br>    at anno.Main.execute(Main.java:70)<br>
    at anno.Main.main(Main.java:119)<br>Caused by: [Error: could not access field: anno.AnnIntRange.method]<br>[Near : {... method.declaringClass ....}]<br>             ^<br>[Line: 1, Column: 1]<br>    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getBeanProperty(ReflectiveAccessorOptimizer.java:550)<br>
    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:336)<br>    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:141)<br>
    at org.mvel2.optimizers.dynamic.DynamicOptimizer.optimizeAccessor(DynamicOptimizer.java:67)<br>    at org.mvel2.ast.ASTNode.optimize(ASTNode.java:161)<br>    at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:117)<br>
    at org.mvel2.MVELRuntime.execute(MVELRuntime.java:89)<br>    at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:125)<br>    at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:118)<br>
    at org.mvel2.MVEL.executeExpression(MVEL.java:952)<br>    at org.drools.base.extractors.MVELClassFieldReader.getValue(MVELClassFieldReader.java:153)<br>    at org.drools.base.evaluators.EqualityEvaluatorsDefinition$ObjectEqualEvaluator.evaluate(EqualityEvaluatorsDefinition.java:1671)<br>
    at org.drools.rule.ReturnValueRestriction.isAllowedCachedRight(ReturnValueRestriction.java:292)<br>    ... 15 more<br><br>