Я разместил этот вопрос только для справки, потому что некоторые разработчики Corda столкнулись с этим. Проблема с созданием «толстой банки», как описано выше, заключается в том, что некоторые артефакты Jard Corda имеют подпись и поэтому содержат дополнительные записи, такие как:
META-INF/CORDACOD.SF
META-INF/CORDACOD.EC
Эти записи не применяются к«толстый кувшин», и поэтому, если вы включите их в «толстый кувшин», JVM будет отклонять его классы как недействительные при попытке его выполнить.
Лучший способ создать «толстый кувшин» вCorda использует плагин Gradle, например shadow
. Однако, если вы должны выполнить эту работу вручную, вам следует соответствующим образом изменить задачу jar
:
jar {
from(configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }) {
exclude "META-INF/*.SF"
exclude "META-INF/*.EC"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
exclude "META-INF/INDEX.LIST"
}
}