classpath
1 | echo $JAVA_HOME |
结果均为空,将 CLASSPATH 初始化为.
后报错不变
maven 配置
maven package 出的 jar 包,想要直接 java -jar
运行的话需要在 MANIFEST.MF
中指定需要运行 main 的类 Main-Class
maven 需要使用maven-jar-plugin
配置
1 | <build> |
其他
以上均无误后还是报错,在服务器上尝试解压jar包直接运行
jar包本质是修改了后缀名的zip包,所以可以直接用 unzip 解压,尝试后依然不行
检查代码,期望调用的类是其他类的子类,形如
1 | public class Main extends SimpleChannelInboundHandler<SipMessageEvent> { |
将继承关系删掉后即可以正常执行
将两个版本的代码编译后的字节码进行反编译 javap -c -l -v xx
得到的信息来看 main 函数签名也没有区别
java8的jvm规范只说
The Java Virtual Machine then links the initial class, initializes it, and invokes the public class method void main(String[])
没有具体规定 main 函数的签名要求(也没有提 main 所在类的要求),因此具体报错原因依然未知