2017-12-17 14 views
1

からJavaメソッドを呼び出すしようとしている:エラー私はラスカルからJavaメソッドを呼び出すためにしようとしていますが、私はこのエラーを取得していラスカル

Cannot link method com.mypackage.Teste because: class not found 

ラスカルコード:

@javaClass{com.mypackage.Teste} 
java void testeJava(); 

Javaコード:

package com.mypackage; 

public class Teste { 
    public void testeJava() { 
     System.out.println("it worked"); 
    } 
} 

com.mypackageパッケージには、ラスカルコードのすべてと一緒に、私のsrcフォルダ内にあります。私もsrc.com.mypackage.Testeを使用しようとしましたが、同じ結果がありました。

私は間違っていますか?

+0

RascalがJavaソースコードまたはバイトコードをインポートするかどうか、私はJavaコンパイルされたクラスを意味しますか? –

+0

RascalはコンパイルされたJavaクラスとバインドしますが、インタフェースは文書化されていないパターンに基づいています。ラスカルライブラリのソースコードを読むと、これが表示されます。 –

答えて

1

クラスには、1つの引数がIValueFactoryタイプのコンストラクタが1つ必要です。これは、関数呼び出しに応答する方法であるため、これをフィールドに格納することがよくあります。 (この工場でIValuesをビルドします)

package com.mypackage; 

import io.usethesource.vallang.IValueFactory; 

public class Teste { 
    private final IValueFactory vf; 

    public Tests(IValueFactor vf) { 
     this.vf = vf; 
    } 
    public void testeJava() { 
     System.out.println("it worked"); 
    } 
} 
+0

別のエラーが発生しました: 'メソッドcom.mypackage.Testeをリンクできません:com.mypackage.Teste。 (org.rascalmpl.value.IValueFactory) 'あなたの例とは別のパッケージである 'org.rascalmpl.value.IValueFactory'から' IValueFactory'をインポートしています。それが問題だろうか? – urielSilva

+1

こんにちは!そのクラス 'org.rascalmpl.value.IValueFactory'私は分かりません。それは間違っているようだ。それはどこから来たのですか?おそらくこれは古い安定版プラグインからのものでしょうか?私はそれ以降のバージョンに更新することをお勧めします。 – jurgenv

関連する問題