提问者:小点点

grails 3.3.2-gradlew bootRun可以工作,但grails run-app和grails-compile不能


在这个项目中,一切都正常。我将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渲染插件不起作用。所以我直接使用飞碟库创建了一个小型概念证明应用程序。它使用与上面给出的相同的依赖项,代码也是相同的。这个小型Grails应用程序仍然可以使用“grails compile”和“grails run-app”

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

我没有在任何地方导入或使用com. lowagie.text.Document——错误抱怨的类。使用gradlew时,它运行得很好,在我运行或编译应用程序的任何方式之前都有效。那个类在itext:4.2.1依赖项中。我下载了jar并查看了一下。

org. xhtmlrenderer.pdf.IText渲染器被导入和使用。创意没有问题。如果尝试导入或使用不在类路径上的类,创意通常会发出警告。

我试图恢复到以前版本的Gradle,但没有成功。

这不是一个节目停止,因为格拉德鲁仍然工作。但是到底发生了什么?有什么想法吗?


共1个答案

匿名用户

我们在grails-3.3.2上。我们遇到了类似的问题。我们尝试按以下顺序运行一些命令,然后它对我们有效。后来我们没有遇到任何编译问题。

  1. gradlew--stop//停止守护进程线程
  2. gradlew清洁//gradle清洁
  3. grails清洁//现在将完全清洁
  4. grails编译

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