“错误:构建Corda胖子客户端时找不到或加载主类”

问题描述 投票:0回答:1

尝试执行我构建的Corda“胖子” RPC客户端,但是它始终会因以下错误而失败:

Error: Could not find or load main class,

我已经确认MANIFEST.MF包含正确的Main-Class属性,并且该类包含在jar中。

我的build.gradle的相关部分是:

jar {
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

使用java -jar myjar.jar执行罐子总是产生此错误:

Error: Could not find or load main class
jar corda
1个回答
1
投票

我发布此问题仅供参考,因为某些Corda开发人员已遇到此问题。如上所述创建“胖罐”的问题是某些Corda罐工件是signed,因此包含诸如:

的额外条目。
META-INF/CORDACOD.SF
META-INF/CORDACOD.EC

这些条目不适用于“胖子罐”,因此,如果将它们包含在“胖子罐”中,那么当您尝试执行它时,JVM将拒绝其类为无效类。

在Corda中创建“胖罐”的最佳方法是使用shadow之类的Gradle插件。但是,如果您必须手工完成此工作,则应相应地更改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"
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.