Grails 3.3.2 - gradlew bootRun工作但grails run-app和grails-compile没有

时间:2017-12-05 05:55:54

标签: 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编译'并得到这个:

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依赖项中。我下载了罐子然后看了。

导入并使用

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

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

这不是一个表演停止因为gradlew仍然有效。但到底是怎么回事?有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我们处于grails-3.3.2。我们面临类似的问题。我们尝试按以下顺序运行一些命令,然后对我们有用。稍后我们没有任何编译问题。

  1. gradlew --stop //停止守护进程线程
  2. gradlew clean //逐步清洁
  3. grails clean //现在可以完全清理
  4. grails编译

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