2011-07-21 4 views
0

私は、しかし、このコードMVELネストされたプロパティの解決の問題

count = 0; 
foreach (minion : minions){ 
    if (minions[count].iq > 120) { 
     return true; 
    } 
} 
return false; 

に対して次のMVEL(1.3.16-java1.6)の発現をしようとしている以下のクラスに

private static class Person{ 
    private int iq; 
    private Person[] minions; 

    public int getIq() { 
     return iq; 
    } 
    public Person[] getMinions() { 
     return minions; 
    } 
} 

を持ってMVEL minions[count].iq(またはさらにminions[0].iq)の構成に問題があるようです。

すべての入力をいただければ幸いです。コンパイラ正確なライチョウは、このように私はそれがASMAccessorOptimizerに見えないと仮定したり、それが希望の場合、ASMAccessorOptimizerがそれにアクセスする権利を持っていないだろう、

Caused by: java.lang.IllegalAccessException: Class org.mvel.optimizers.impl.asm.ASMAccessorOptimizer can not access a member of class Person with modifiers "public" 
+0

私はMVE1を知りませんが、 'Person'クラスはプライベートなので' ASMAccessorOptimizer'は実際に 'Person'を見ないかもしれないし、アクセス権を持っていないかもしれません。 – Thomas

+0

@トーマス。良いキャッチ。 MVELは、たとえクラスがプライベートであったとしても、 "iq <50"などの式に問題はありませんでした。それはちょっと私を捨てた。あなたが答えを加えることができるなら、私はそれを受け入れるでしょう – qwerty

+0

答えとしてコメントを追加しました。 – Thomas

答えて

1

あなたPersonクラスはプライベートです。

公開するとPersonと宣言するとその問題が解決されます。

関連する問題