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.groovy
erhalte 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.groovy
und script.groovy
befinden 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-library
Ihr Freund.
Keine Kommentare:
Kommentar veröffentlichen