Grails не загружает классы в файл .jar - PullRequest
2 голосов
/ 21 марта 2011

Я заинтересован в использовании определенной библиотеки ( Gremlin , язык обхода графов) в моем проекте Grails. Я поместил необходимые файлы .jar в [grailsproject] / lib. Но когда я делаю grails run-app, это дает мне ошибку компиляции: класс 'Gremlin', который является частью jar (я подтвердил, что он включен в jar, запустив tar tf <jarfile>.jar, и он показывает класс Gremlin):

[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed,
...unexpected token: Gremlin @ line 45, column 2.
  [groovyc]     Gremlin.load()
  [groovyc]     ^

Есть ли способ "обновить" Grails, чтобы убедиться, что он загружает новые файлы JAR? Я использую точно такой же jar в независимом тестовом приложении groovy с теми же операторами импорта, и там я могу использовать класс Gremlin, и он отлично работает. Моя система $ CLASSPATH не содержит файлов jar, которые я также не добавил в [grailsproject] /lib.

Есть идеи?

Спасибо!

Обновление : Вот соответствующий раздел из кода:

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()

    ...

Ответы [ 3 ]

3 голосов
/ 21 марта 2011

Я думаю, вы должны поместить Gremlin.load() в метод, а не только в раздел определения вашего класса обслуживания ...

есть:

class GraphDbService {
  boolean transactional = true    

  def someServiceMethod() {
    Gremlin.load()
  }

  ...

Или, желательно, вы должны иметь возможность поместить его в метод init() вашего BootStrap.groovy файла, так как он требует вызова только один раз, чтобы он мог украсить все необходимые классы.

0 голосов
/ 23 апреля 2014

До

grails compile --refresh-dependencies
0 голосов
/ 21 марта 2011

Я думаю, вы можете добавить следующее к grails-app/conf/BuildConfig.groovy

grails.project.dependency.resolution = {
    //...bunch of stuff
    dependencies {
        // other resolved dependencies here

        compile files('lib/gremlim.jar')
    }
}
...