GOOGLE ADS

Donnerstag, 21. April 2022

Traubenabhängigkeiten für mehrere Klassen propagieren

Ich habe diese Klasse in der DateiStreamingPOIWriter.groovy

@Grapes([
@Grab(group='org.apache.poi', module='poi', version='3.14'),
@Grab(group='org.apache.poi', module='poi-ooxml', version='3.14'),
@Grab(group='org.apache.poi', module='poi-ooxml-schemas', version='3.14')
])
import org.apache.poi.xslf.usermodel.XMLSlideShow
import org.apache.poi.xslf.usermodel.XSLFSlide
class StreamingPOIWriter {
XMLSlideShow presentation
def withPresentation() {
presentation = new XMLSlideShow()
this
}
def write(filename) {
presentation.write(new FileOutputStream(filename))
}
def withSlide() {
XSLFSlide slide = presentation.createSlide()
this
}
}

Kompiliert habe ich es mit groovyc.

Aber als ich mich entschied, seine Instanz in einer anderen Datei zu erstellen -script.groovy

new StreamingPOIWriter()
.withPresentation()
.withSlide()
.write("presentation.pptx")

Wenn ich finde, es mit auszuführen, groovy script.groovyerhalte ich diesen Fehler

Caught: java.lang.NoClassDefFoundError: org/apache/poi/xslf/usermodel/XMLSlideShow
java.lang.NoClassDefFoundError: org/apache/poi/xslf/usermodel/XMLSlideShow
at script.run(script.groovy:2)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.xslf.usermodel.XMLSlideShow
... 1 more

Es scheint, dass es keine Abhängigkeiten finden kann, die von benötigt werden StreamingPOIWriter. Wie verbreitet man sie script.groovy?

StreamingPOIWriter.groovyund script.groovybefinden sich im selben Ordner.


Lösung des Problems

Nun, so war Grapes nicht gedacht. Sie sollten, wie Sie wahrscheinlich herausgefunden haben, einzelne Skripte ausführen. Wenn Sie wirklich das tun möchten, was Sie jetzt tun, fügen Sie auch die Annotation @Grapes hinzu script.groovy.

Andernfalls würde ich empfehlen, stattdessen Gradle zu verwenden, wenn Sie etwas Komplexeres erstellen. gradle init, und in Ihrem Fall ist es wahrscheinlich gradle init --type groovy-libraryIhr Freund.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...