L'autre jour, j'ai écrit un article Run-apped with grails and it stop booting Je l'ai essayé avec un modèle qui le place et le déplace, mais apparemment cela ne fonctionne pas bien si le chemin de classe contient des espaces. Mon ordinateur a été configuré à l'avance par un employé de l'entreprise lorsque j'ai rejoint l'entreprise, mais le nom complet est vide. Il y a donc un espace dans le chemin du répertoire personnel. orz
Les chemins de classe intégrés dans le fichier jar sont séparés par des espaces. Il semble que les blancs dans le chemin soient échappés avec% 20. Là où vous collectez les chemins du fichier jar pathingJar, remplacez les espaces.
build.gradle
...Omission...
task pathingJar(type: Jar) {
dependsOn configurations.runtime
appendix = 'pathing'
doFirst {
manifest {
attributes "Class-Path": configurations.runtime.files.collect {
it.toURL().toString().replaceFirst(/file:\/+/, '/').replace(' ', '%20')
}.join(' ')
}
}
}
...Omission...
Grails a une astuce appelée pathingJar = true, mais j'ai également rencontré une situation mystérieuse où cela ne démarre pas. Par conséquent, écrivez comme suit. Si j'écris une tâche avec pathingJar telle quelle, je me fâche qu'elle existe déjà, j'ai donc choisi la tâche pathingJarEx.
build.gradle
...Omission...
// grails {
// pathingJar = true
// }
task pathingJarEx(type: Jar) {
dependsOn configurations.runtime
appendix = 'pathing'
doFirst {
manifest {
// Build the Class-Path for absolute paths based on runtime dependencies.
attributes(
'Class-Path': configurations.runtime.files.collect {
it.toURL().toString().replaceFirst(/file:\/+/, '/').replace(' ', '%20')
}.join(' ')
)
}
}
exclude { it.file.absolutePath.contains('assetCompile') }
}
...Omission...
bootRun {
...Omission...
dependsOn pathingJarEx
doFirst {
classpath = files("$buildDir/classes/main", "$buildDir/resources/main", "$projectDir/gsp-classes", pathingJarEx.archivePath)
}
}
...Omission...