2010-04-23 34 views
0

我有一个grails项目,在src/java文件夹下有一些额外的java源文件。编译/运行服务器时,该目录下的文件将与所有其他groovy/grails类一起编译到项目的目标文件夹中。到现在为止还挺好。Grails目标文件夹似乎不在应用程序的类路径

但是,当我尝试使用反射(确切地说Class.forName)加载java源文件(来自src/java)之一时,抛出了ClassNotFoundException异常。什么是独特的对整个事情是,如果我从复制项目的目标/文件夹同级到以下位置(在Windows上):

< myuser的> \ .grails \ 1.2.2 \项目\ <MyProjectName> \资源

然后不会引发异常,并且相应的类加载正常。这似乎表明,集成的grails服务器只查看用户动态生成的项目文件夹中的类,而不是实际项目的目标文件夹。

我的理解是否正确?有没有办法迫使grails将目标/文件夹中的某些类文件复制到用户目录中的资源文件夹中?有没有不同的方式来使用反射来加载类文件?我正在使用grailsApplication的类加载器,但似乎也没有工作。任何提示都会比欢迎。提前感谢!

回答

1

Web应用程序使用动态类加载器,所以你需要使用的上下文ClassLoader:

def clazz = Class.forName(className, true, Thread.currentThread().contextClassLoader) 
+0

谢谢。解决了这个问题! – Kobi 2010-04-24 00:03:07

相关问题