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