Leggi barattoli dalla cartella Lib in Grails
-
13-11-2019 - |
Domanda
Voglio analizzare un file Excel usando il Biblioteca Apache Poi Per avviare alcuni dati in modalità di sviluppo nella mia applicazione Grails 2.0.1.
Ho provato a usare i Grails Plug-in Excel-Import ma il Il plugin disinstalla automaticamente quando eseguo run-app.
Per questo motivo ho deciso di andare avanti senza il plugin per ora. Per prima cosa ho copiato i vasetti successivi nella cartella Lib dell'applicazione Grails
$ls -la lib
poi-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
xmlbeans-2.3.0.jar
Ho letto che dovrei dichiarare la dipendenza in grails-app/conf/BuildConfig.groovy
. Quindi, ho aggiunto il prossimo:
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
compile ('org.apache.poi:poi:3.7', 'org.apache.poi:poi-ooxml:3.7')
// runtime 'mysql:mysql-connector-java:5.1.16'
}
Tuttavia, quando eseguo run-app, l'applicazione non è ancora in grado di trovare i barattoli.
grails> run-app
| Compiling 76 source files
| Compiling 30 source files.
| Error Compilation error: startup failed:
UMEExcelImporter.groovy: 8: unable to resolve class org.apache.poi.xssf.usermodel.XSSFSheet
@ line 8, column 1.
import org.apache.poi.xssf.usermodel.XSSFSheet
^
UMEExcelImporter.groovy: 7: unable to resolve class org.apache.poi.xssf.usermodel.XSSFWorkbook
@ line 7, column 1.
import org.apache.poi.xssf.usermodel.XSSFWorkbook
^
UMEExcelImporter.groovy: 9: unable to resolve class org.apache.poi.xssf.usermodel.XSSFRow
@ line 9, column 1.
import org.apache.poi.xssf.usermodel.XSSFRow
Non sto usando alcun IDE. Qualsiasi feedback è il benvenuto!
Soluzione
I barattoli POI sono su quelli di Public Maven Repo, quindi prova questo:
- Rimuovi i barattoli dalla cartella Lib
- Pulisci la tua build con:
grails clean
- In te buildconfig.groovy assicurati che la chiusura "repository" abbia "
mavenCentral()
"Incluso/non spettato - La tua dipendenza sembra ok (non l'ho confermato) quindi ora prova la run-app
Hth
Altri suggerimenti
Invece di aggiungere dipendenza dalla compilazione, prova ad aggiungere la dipendenza da runtime come segue.
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
runtime ('org.apache.poi:poi:3.7', 'org.apache.poi:poi-ooxml:3.7')
// runtime 'mysql:mysql-connector-java:5.1.16'
}