【问题标题】:Grails 3 upgrade - unable to resolve class grails.plugin.rendering.pdf.PdfRenderingServiceGrails 3 升级 - 无法解析类 grails.plugin.rendering.pdf.PdfRenderingService
【发布时间】:2020-09-17 22:50:48
【问题描述】:

我继承了一个基于 Grails 2.5.4 的多模块 grails 应用程序。

我安装了groovy 3.0.4和grails 3.3.11,根据官网(https://docs.grails.org/3.0.x/guide/upgrading.html)提供的教程完成了grails升级任务。

我正在处理大量代码调整,但在尝试构建项目时遇到了一个特定问题,我面临以下问题:

C:\repo\upgraded-app\myapp-web\grails-app\services\bitt\PdfRenderingService.groovy: 9: unable to resolve class grails.plugin.rendering.pdf.PdfRenderingService
 @ line 9, column 1.
   @Transactional
   ^

涉及的代码如下:

import com.lowagie.text.pdf.BaseFont
import grails.transaction.Transactional
import grails.util.Environment
import org.w3c.dom.Document
import org.xhtmlrenderer.pdf.ITextRenderer

@Transactional
class PdfRenderingService extends grails.plugin.rendering.pdf.PdfRenderingService {
...

我的 build.gradle 文件如下:

buildscript {
    repositories {
        mavenLocal()
        maven { url "https://repo.grails.org/grails/core" }
    }
    dependencies {
        classpath "org.grails:grails-gradle-plugin:$grailsVersion"
        classpath "org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}"
        classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.15.1"
    }
}

version "0.1"
group "bitt.web"

apply plugin:"eclipse"
apply plugin:"idea"
apply plugin:"war"
apply plugin:"org.grails.grails-web"
apply plugin:"asset-pipeline"
apply plugin:"org.grails.grails-gsp"

repositories {
    mavenLocal()
    maven { url "https://repo.grails.org/grails/core" }
}

dependencies {  
    compile project(':../bitt-core')
    compile "org.springframework.boot:spring-boot-starter-logging"
    compile "org.springframework.boot:spring-boot-autoconfigure"
    compile "org.grails:grails-core"
    compile "org.springframework.boot:spring-boot-starter-actuator"
    compile "org.springframework.boot:spring-boot-starter-tomcat"
    compile "org.grails:grails-web-boot"
    compile "org.grails:grails-logging"
    compile "org.grails:grails-plugin-rest"
    compile "org.grails:grails-plugin-databinding"
    compile "org.grails:grails-plugin-i18n"
    compile "org.grails:grails-plugin-services"
    compile "org.grails:grails-plugin-url-mappings"
    compile "org.grails:grails-plugin-interceptors"
    compile "org.grails.plugins:cache"
    compile "org.grails.plugins:async"
    compile "org.grails.plugins:scaffolding"
    compile "org.grails.plugins:events"
    compile "org.grails.plugins:hibernate5"
    compile "org.hibernate:hibernate-core:5.1.16.Final"
    compile "org.grails.plugins:gsp"

    compile 'org.grails.plugins:spring-security-core:3.2.3'
    compile 'org.grails.plugins:spring-security-acl:3.2.1'
    compile 'org.grails.plugins:grails-markdown:3.0.0'
    compile 'org.grails.plugins:rendering:2.0.3'
    compile 'org.grails.plugins:excel-export:2.1'
    compile 'org.grails.plugins:grails-cookie:2.0.3'
    compile 'org.grails.plugins:spring-security-ui:3.0.2'
    compile 'org.grails.plugins:http-builder-helper:1.1.0'
    compile 'org.grails.plugins:audit-logging:3.0.6'

    console "org.grails:grails-console"
    profile "org.grails.profiles:web"
    runtime "org.glassfish.web:el-impl:2.1.2-b03"
    runtime "com.h2database:h2"
    runtime "org.postgresql:postgresql:9.4-1203-jdbc42"
    runtime "org.apache.tomcat:tomcat-jdbc"
       runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.15.1"
    testCompile "org.grails:grails-gorm-testing-support"
    testCompile "org.grails.plugins:geb"
    testCompile "org.grails:grails-web-testing-support"
    testCompile "org.grails.plugins:geb:1.1.2"
    testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
    testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
    testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:2.47.1"
}

bootRun {
    jvmArgs('-Dspring.output.ansi.enabled=always')
    addResources = true
    String springProfilesActive = 'spring.profiles.active'
    systemProperty springProfilesActive, System.getProperty(springProfilesActive)
}

tasks.withType(Test) {
    systemProperty "geb.env", System.getProperty('geb.env')
    systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest")
    systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver')
    systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver')
}

assets {
    minifyJs = true
    minifyCss = true
    includes = ["fonts/*"]
}

上面提到的代码在 Grails 2 中运行良好...但现在在 Grails 3 中引发编译错误...知道为什么吗?

谢谢。

【问题讨论】:

  • 发布的 Grails 4.0.x-- 不兼容 groovy 3.x,运行 2.5.6
  • 其实是从 Grails 2.5.4 升级到 Grails 3.3.11...
  • 是的,没有发布的 Grails 版本支持 groovy 3

标签: grails groovy upgrade


【解决方案1】:

主要 Grails 版本之间的升级并不容易,因为 Gradle 配置有很大差异。

我建议您使用Grails Starter 获取示例应用程序,从那里解压缩build.gradlegradle.properties,然后将您的旧配置(主要是依赖项)合并到其中。

配置也从 .groovy 文件更改为 .yml,请考虑迁移它们。

【讨论】:

  • 我听到了...谢谢,但是我在这里继承了一个多模块项目...我需要查看多个 build.grade 文件...但我会也尝试探索一下。谢谢
  • 我认为这并不重要。提问者不就是使用了错误的包名吗?
  • @JeffScottBrown 我已经在几个项目中偶然发现了那些几乎看不见的 gradle 变化,所以这也有点道理
  • 明白了。我的错。
  • 如果您按照这些说明进行操作,我认为该项目仍然无法编译。您可能必须引用正确的包名称。我将删除我的答案。您的答案,结合此评论可能是解决方案。
猜你喜欢
  • 1970-01-01
  • 2016-11-09
  • 2017-08-06
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多