我在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 refresh-dependencies,但没有任何效果。是什么给了什么?
答案 0 :(得分:5)
您无法从包中的类访问“default”包中的类。将类移动到与服务相同的包中,或将其放在另一个包中并添加导入。
答案 1 :(得分:2)
我在/ src / java文件夹中创建了一个包。我打电话给“this.works”包
这是我更新的Java类:
package this.works;
public class PleaseWork
{
public static void hello()
{
System.out.println("Hello from a java class.");
}
}
这是我更新的Groovy类,它调用Java类:
package myPackage
import this.works.PleaseWork
class CreatePdfService {
def serviceMethod() {
PleaseWork.hello()
}
}
这现在有效。我可以做一个grails run-app,我的Java类中的方法被调用。