【发布时间】:2014-05-06 12:01:13
【问题描述】:
我刚刚尝试从 groovy 读取 grails 配置。 ConfigSlurper 易于使用,但由于它执行配置,因此需要所有依赖项。就我而言,它抱怨缺少log4j 类。
即使我将这个类导入到我的ConfigSlurper 脚本中,配置本身也会遇到这个问题。
知道如何使配置可以访问log4j 类吗?
更新:现在我面前有一个合适的键盘,我可以详细说明我的问题:
我有配置 log4j 的 grails 配置,如文档中所述:
import org.apache.log4j.*
log4j = {
appenders {
appender new RollingFileAppender(
name: "myAppender",
maxFileSize: 1024,
file: "/tmp/logs/myApp.log"
)
}
}
然后我尝试像这样解析它们:
def file = new File(<config location>)
def config = new ConfigSlurper().parse(file.toURL())
然后 Slurper 抛出异常...
【问题讨论】:
-
如果您正在执行任何对 log4j 类具有静态引用的 Groovy 代码(配置文件或其他),那么这些 log4j 类需要位于类路径中。
-
这就是我虽然但没有设法解决的问题。我在 groovyConsole 中尝试了我的脚本。在脚本中创建一个新的 RollingFileAppender 没有问题,但是 ConfigSlurper 仍然抱怨它。但是我在我的配置文件中找到了一种更好的方法来完全避免它......在当前文档中找到它。
-
您说“即使我将此类导入到我的 ConfigSlurper 脚本中”。进口是不够的。如果类在类加载器中不可用,则导入将不起作用,这通常意味着在类路径中可用。
-
Mh.是的,我知道类路径,但我认为如果周围的脚本可以访问类......但我现在也找到了更好的解决方案。一会儿就写下来……