我有兴趣在我的Grails项目中使用某个库(Gremlin,图形遍历语言)。我把必要的.jars放到[grailsproject] / lib中。但是当我做grails run-app
时,它给了我一个编译错误:一个类'Gremlin'是jar的一部分(我确认它通过运行tar tf <jarfile>.jar
包含在jar中,它显示了Gremlin):
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed,
...unexpected token: Gremlin @ line 45, column 2.
[groovyc] Gremlin.load()
[groovyc] ^
有没有办法“刷新”Grails以确保它加载新的jar文件?我在具有相同import语句的独立groovy测试应用程序中使用完全相同的jar,并且我能够使用Gremlin类并且它工作正常。我的系统$ CLASSPATH不包含我在[grailsproject] / lib中也没有添加的任何jar文件。
有什么想法吗?
谢谢!
更新:以下是代码中的相关部分:
package com.mycompany.myproject
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
import com.orientechnologies.common.collection.*
import com.orientechnologies.common.*
import com.orientechnologies.orient.core.*
import com.tinkerpop.blueprints.*
import com.tinkerpop.blueprints.pgm.*
import com.tinkerpop.blueprints.pgm.impls.orientdb.*
import com.tinkerpop.gremlin.pipes.*
import com.tinkerpop.gremlin.Gremlin
import com.tinkerpop.gremlin.*
class GraphDbService {
boolean transactional = true
Gremlin.load()
...
答案 0 :(得分:3)
我认为你必须将Gremlin.load()
放在方法中,而不只是在服务类的定义部分...
即:
class GraphDbService {
boolean transactional = true
def someServiceMethod() {
Gremlin.load()
}
...
或者,最好,您应该能够将它放在init()
文件的BootStrap.groovy
方法中,因为它只需要调用一次,这样它就可以装饰所有必需的类。< / p>
答案 1 :(得分:0)
我认为您应该能够将以下内容添加到grails-app/conf/BuildConfig.groovy
grails.project.dependency.resolution = {
//...bunch of stuff
dependencies {
// other resolved dependencies here
compile files('lib/gremlim.jar')
}
}
答案 2 :(得分:0)
做
grails compile --refresh-dependencies