2011-07-07 11 views
0

私はAcceleoでテンプレート内のいくつかのJavaコードを呼び出そうとします。 そこに記載されているコード:http://wiki.eclipse.org/Acceleo/FAQ#How_to_use_a_Java_service_in_Acceleoは問題なく動作しますが、私のコードではエラーが発生しません。AcceleoでJavaコードを呼び出す

ここに私のJava機能:

public String test(softo.Activite activity) { 
    return activity.getModXName(); 
} 

とテンプレートのコード:

[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite activity)', Sequence{a}) /] 
[template public createOperationUrl(activity : AccessibleActivite) ] 
Result : [getTest(activity)/] 
[/template] 

私はまた、「foobarに」復帰によりリターン機能を交換しようとしたが、それはどちらか動作しません。 生成時にメッセージが表示されません。ファイルに「結果:」が含まれています。 私が使用するパスとファイル名もチェックしました。

問題を解決する方法はありますか?

編集: よろしくお願いします。クエリコードであなたは、引数名を配置する必要はありません、だけでそのタイプなので、::私は最終的にそれは本当に愚かだ...答えを見つけることが

[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite activity)', Sequence{a}) /] 

になった:

[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite)', Sequence{a}) /] 

とそれは動作します...有益な情報=)

+0

私は2つのクエリの違いを見ていない...彼らが見えます同じ。私はあなたと同じ問題を抱えていますが、どのように解決しましたか?ありがとう – DeLac

答えて

0

マニフェストにJavaサービスを含むパッケージをエクスポートしましたか?そうでない場合は、MANIFEST.MFファイルを開き、ランタイム・タブに移動してJavaクラスを含むパッケージをエクスポートします。サービスが確実に呼び出されるようにするには、Javaメソッドの "return"の前に新しいRuntimeException()をスローすることもできます。

+0

パッケージが正しくエクスポートされています。しかし、答えをありがとう、私はそれを忘れているかもしれません。 RuntimeExceptionを起動しようとしましたが、実際には関数は呼び出されませんでした。 –

0

本当に関連しますが、この構文を使用しての習慣を取る必要がない場合:

activity.getTest() 

代わりの

getTest(activity) 
関連する問題