Scala Jar包运行提示主方法非静态,IntelliJ可正常运行求解决
问题分析与解决方案
报错本质
Scala里定义的object会被编译生成两个字节码文件:
oracle.Execution.class:包含JVM可识别的静态main方法,是合法的程序入口类oracle.Execution$.class:单例对象的实际运行类,不存在静态main方法
你遇到的报错是因为JVM错误加载了oracle.Execution$而非正确的入口类oracle.Execution,问题出在运行命令或jar包的配置上。
解决办法
方法1:改用类路径参数运行
放弃-jar参数,用-cp指定jar包路径,直接运行正确的入口类:
java -cp MyProgram.jar oracle.Execution
方法2:配置jar包清单后直接运行
确保jar包内META-INF/MANIFEST.MF文件正确指定主类:
Main-Class: oracle.Execution
之后无需额外指定类名,直接运行jar包即可:
java -jar MyProgram.jar
验证打包正确性
可以用以下命令查看jar包内容,确认oracle/Execution.class存在且清单配置无误:
jar tf MyProgram.jar
内容的提问来源于stack exchange,提问作者Shelen
相关产品推荐
相关产品推荐

