2011-12-06 11 views
0

私は過去1日間問題を解決しようとしていましたが、解決できませんでした。タイプのみインポートできます。 models.XYZがパッケージに解決する

Iamが遊びモデルから脱落(ルール)を引き起こしています。私のローカル環境では問題なく動作しています。

しかし、IAMは、次のエラー

Error = Unable to resolve ObjectType 'Tracker' : [Rule name='PM APPROVAL'] 
Unable to resolve ObjectType 'User' : [Rule name='SEND MAILS'] 
Unable to resolve ObjectType 'Tracker' : [Rule name='SEND MAILS'] 
Error importing : 'models.Tracker'Error importing : 'notifications.TrackerMails'Error importing : 'models.User'Rule Compilation error : [Rule name='SEND MAILS'] 
    drools/Rule_SEND_MAILS_0.java (2:23) : Only a type can be imported. notifications.TrackerMails resolves to a package 
    drools/Rule_SEND_MAILS_0.java (2:57) : Only a type can be imported. models.Tracker resolves to a package 
    drools/Rule_SEND_MAILS_0.java (2:95) : Only a type can be imported. models.User resolves to a package 
    drools/Rule_SEND_MAILS_0.java (8:422) : TrackerMails cannot be resolved 
    drools/Rule_SEND_MAILS_0.java (8:455) : $user cannot be resolved to a variable 
    drools/Rule_SEND_MAILS_0.java (8:461) : $tracker cannot be resolved to a variable 

drooolssession.Iが、私はまだいくつかのフォーラムで見たが、変数のクラスローダを追加する必要があり得るのサンプルコードを取得し、SolarisのボックスIAMに生産上の同じアプリケーションを展開するとき問題は解決していません。

StatefulKnowledgeSession dsession = null;   
      ClassLoader classLoader = TrackerUtil.class.getClassLoader(); 

      KnowledgeBuilderConfiguration kBuilderConfiguration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, classLoader); 
      KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(kBuilderConfiguration); 
      KnowledgeBaseConfiguration kbaseConfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(null, classLoader); 
      ''''' 

      builder.add(ResourceFactory.newFileResource(new File(uri)),ResourceType.DRL); 

      '''' 
      builder.add(ResourceFactory.newFileResource(new File(uri)),ResourceType.DRF); 
      .......    

      KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig); 
      knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages()); 

      dsession = knowledgeBase.newStatefulKnowledgeSession(); 
      return dsession; 

誰でも問題の解決方法を教えてください。

+0

クラスローダーからクラスをロードしようとしても、クラスを正しく読み込むことができますが、まだ豆を解決することができます –

+0

kbaseとksessionで同じクラスローダーを使用しようとしました – salaboy

+0

はいまだ私はできませんでした解決する。 –

答えて

0

最後に、2日後に問題を解決しました。

Droolsは再生モデルを解決することができないため、この問題が発生します。Eclipseでクラス/クラスを追加するとEclipseは正常に動作しますが、「再生実行」を実行するたびに再生を見つけることができませんこれを克服するために、 "tmp/classes"をクラスパスに追加する必要があります。ここで

は、私たちがあなたに

  1. Go]を追加する方法です>>フォルダ内に行くのフレームワーク>> PYMインストールディレクトリをプレイ>> getClasspath defの方法を行く
  2. オープンapplication.py
  3. を再生(自己):方法で
  4. ラインclasspath.appendを見つける(os.path.normpath(os.path.join(self.path、 'CONF')))行の下には、次の行を追加

    classpath.append(os.path.normpath(os.path.join(os.path.join(self.path, 'tmp'),'classes')))

  5. これで遊びモデルを見つけることができます。すべてうまく見えます。

解決策2は

であるあなたは

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Dplay.debug=yes -Dplay.id= -Dapplication.path=/home/przemek/pn -Djava.endorsed.dirs=/opt/play/framework/endorsed -javaagent:/opt/play/framework/play-1.2.4.jar -Dfile.encoding=UTF-8 -classpath "Play computed classpath" and path to tmp classes Play.server.Server 

fine.Youは、コマンド遊びクラスパスを実行して、遊び計算クラスパスを取得することができたとしても上記作品以下のようなプレイサーバーを呼び出すことができます。クラスパスの場合、linuxの区切り文字は ":"ですが、ウィンドウでは ";"

上記のソリューションは機能しますが、なぜ私は本当にその部分を理解できませんでしたか? droolsが同じモデルを解決できない場合、どのようにモデルを解決できますか?

上記の回答がわかっている場合はお知らせください。

関連する問題