2

Windows 7(32ビット)でGroovy / Grails ToolSuite3.1.0を使用しています。Grailsアプリケーションの/src/javaディレクトリに作成した単純なJavaクラスをGrailsに認識させることはできません。

これが私のJavaクラスです:

public class PleaseWork {

    public static void hello()
    {
        System.out.println("Hello from a java class.");
    }
}

作成したサービスからJavaクラスを呼び出しています。

package mypackage
class CreatePdfService {

    def serviceMethod() {

        PleaseWork.hello()
    }
}

プロジェクトの.classpathを確認しましたが、次のように表示されます。

<classpath>
<classpathentry kind="src" path="src/java"/>
<classpathentry kind="src" path="src/groovy"/>
<classpathentry kind="src" path="grails-app/conf"/>....

私のJavaソースディレクトリが含まれているようで、それを除外する設定はありません。すべてがよさそうだ。

私の理解では、そのjavaクラスを問題なく呼び出すことができるはずです。そして、問題なくgrailsrun-appを実行できます。しかし...アプリケーションを実行し、コードがPleaseWork.hello()を呼び出そうとすると、次のようになります。

| Error 2013-02-18 15:59:10,898 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver  -   
MissingPropertyException occurred when processing request: [POST] /mypackage/main/createPdf
No such property: PleaseWork for class: mypackage.CreatePdfService. Stacktrace follows:
Message: No such property: PleaseWork for class: mypackage.CreatePdfService

Grailsの更新を行いました-依存関係があり、何も機能しません。何が得られますか?

4

2 に答える 2

5

パッケージ内のクラスから「デフォルト」パッケージのクラスにアクセスすることはできません。クラスをサービスと同じパッケージに移動するか、別のパッケージに入れてインポ​​ートを追加します。

于 2013-02-19T02:43:30.493 に答える
2

ああ...バートありがとう。私は次のことをしました...

その/src/javaフォルダー内にパッケージを作成しました。パッケージを「this.works」と呼びました

これが私の更新されたJavaクラスです:

package this.works;

public class PleaseWork 
{

    public static void hello()
    {
       System.out.println("Hello from a java class.");
    }
}

これが、Javaクラスを呼び出している更新されたGroovyクラスです。

package myPackage

import this.works.PleaseWork

class CreatePdfService {

   def serviceMethod() {
         PleaseWork.hello()
   }
}

これで動作します。grails run-appを実行でき、Javaクラスのメソッドが呼び出されます。

于 2013-02-19T15:49:06.890 に答える