Grails 3.3.2 - gradlew bootRun 有效,但 grails run-app 和 grails-compile 无效

标签 grails gradle gradlew

以前在这个项目中一切正常。我将 Grails 从 3.3.1 更新到 3.3.2,它仍然有效。我还更新了 Gradle,现在它不起作用。

gradlew bootRun 和 gradlew war 都可以工作,war 文件部署到 Tomcat 并且工作正常。

要生成 pdf 文档,我有以下依赖项:

compile "org.xhtmlrenderer:flying-saucer-core:9.1.9"
compile "org.xhtmlrenderer:flying-saucer-pdf:9.1.9"
compile "com.lowagie:itext:4.2.1"

清理后我运行'grails compile'并得到这个:
General error during class generation: java.lang.NoClassDefFoundError: Unable to load class org.xhtmlrenderer.pdf.ITextRenderer due to missing dependency Lcom/lowagie/text/Document;

java.lang.RuntimeException: java.lang.NoClassDefFoundError: Unable to load class org.xhtmlrenderer.pdf.ITextRenderer due to missing dependency Lcom/lowagie/text/Document;
        at org.codehaus.groovy.control.CompilationUnit.convertUncaughtExceptionToCompilationError(CompilationUnit.java:1101)
        at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1079)
        at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
        at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:537)
        at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:175)
        at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:56)
        at org.gradle.api.internal.tasks.compile.daemon.AbstractDaemonCompiler$CompilerRunnable.run(AbstractDaemonCompiler.java:87)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:36)
        at org.gradle.workers.internal.WorkerDaemonServer.execute(WorkerDaemonServer.java:46)
        at org.gradle.workers.internal.WorkerDaemonServer.execute(WorkerDaemonServer.java:30)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)

With stacktrace:
java.util.concurrent.ExecutionException: org.gradle.tooling.BuildException: Could not execute build using Gradle installation '/home/chris/.sdkman/candidates/gradle/current'.
    at java_util_concurrent_Future$get.call(Unknown Source)
    at run-app.run(run-app.groovy:89)

当我做这个 pdf 的事情时,grails 渲染插件不起作用。因此,我直接使用 Flying Saucer 库创建了一个小型概念验证应用程序。它使用与上面给出的相同依赖项,并且代码是相同的。这个小型 Grails 应用程序仍然可以与“grails compile”和“grails run-app”一起使用

在 Idea 中,即使 Idea 设置为使用应用程序的 Gradle 包装器,我也会遇到完全相同的问题。

我无法在任何地方导入或使用 com.lowagie.text.Document - 错误提示的类。并且在使用 gradlew 时,它工作得很好,并且在我运行或编译应用程序之前它工作得很好。该类位于 itext:4.2.1 依赖项中。我下载了jar并查看了。

org.xhtmlrenderer.pdf.ITextRenderer 导入使用。想法没有问题。如果尝试导入或使用不在类路径上的类,Idea 通常会发出警告。

我尝试恢复到以前版本的 Gradle,但没有运气。

这不是一个展示停止器,因为 gradlew 仍然有效。但到底发生了什么?有任何想法吗?

最佳答案

我们在 grails-3.3.2 上。我们遇到了类似的问题。我们尝试按以下顺序运行几个命令,然后它就为我们工作了。后来我们没有遇到任何编译问题。

  • gradlew --stop//停止守护线程
  • gradlew clean//gradle clean
  • grails clean//现在将完全清理
  • grails 编译

  • 现在编译应该没有任何问题。

    关于Grails 3.3.2 - gradlew bootRun 有效,但 grails run-app 和 grails-compile 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47646950/

    相关文章:

    postgresql - 如何使用 GORM 将固定长度字符串映射到 Postgresql?

    events - 如何使用事件推送插件动态创建新主题

    Android gradle build System.getEnv ("RELEASE_PASSWORD") 返回 null

    android - 尝试在Mac上的Android模拟器上运行NativeScript应用程序的Gradle错误

    if-statement - Gradle 仅在定义的属性上运行任务

    grails - Grails war命令未设置环境

    hibernate - Grails deleteAll() 因 hibernate 异常而失败

    安卓. Gradle 。将数据与代码分离

    android - 为基于 Android Gradle 的项目配置 Bamboo

    android - 如何在 build.gradle 中检索 ADB 的路径