2

我在 Windows 7(32 位)上使用 Groovy/Grails Tool Suite 3.1.0。我一辈子都无法让 Grails 识别我在 Grails 应用程序的 /src/java 目录中创建的简单 Java 类。

这是我的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类。我可以毫无问题地做一个 grails run-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 回答