java - Grails 目标文件夹似乎不在应用程序的类路径上

标签 java reflection grails groovy

我有一个 grails 项目,在 src/java 文件夹下有一些额外的 java 源文件。编译/运行服务器时,该目录下的文件将与所有其他 groovy/grails 类一起编译到项目的目标文件夹中。到目前为止一切顺利。

但是,当我尝试使用反射(确切地说是 Class.forName)加载 java 源文件之一(来自 src/java)时,会抛出 ClassNotFoundException。整个事情的奇特之处在于,如果我将同一个类从项目的 target/文件夹复制到以下位置(在 Windows 上):

\.grails\1.2.2\projects\\resources

那么就不会抛出异常,并且相应的类也可以正常加载。在我看来,这似乎表明集成的 grails 服务器只查看用户动态生成的项目文件夹中的类,而不是实际项目的目标文件夹。

我的理解正确吗?有没有办法强制 grails 将某些类文件从 target/文件夹复制到用户目录中的资源文件夹中?是否有其他方法使用反射加载类文件?我正在考虑使用 grailsApplication 的类加载器,但这似乎也不起作用。任何提示都非常受欢迎。预先非常感谢!

最佳答案

Web 应用程序使用动态类加载器,因此您需要使用上下文类加载器:

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

关于java - Grails 目标文件夹似乎不在应用程序的类路径上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695855/

相关文章:

java - 将文件从 xls 转换为 xlsb 以减小其大小

generics - 是否可以在 Vec 中存储类型而不是这些类型的实例?

grails - 如何在带有grails的Acegi上指定自定义盐?

java - Hamcrest 匹配器 closeTo 无法按预期工作

java - 如何在没有互联网访问的情况下配置maven

c# - Assembly.LoadFrom 是否保留打开的文件句柄?

grails - 如何使用Spring Security从 Controller 注销

grails - 在基本OS上编译/运行Grails应用3.2.5时出现错误

java - 线程中调用sleep方法的不同方式

java - 带反射的 NPE