夕口小生 2021-12-06 12:03 采纳率: 0%
浏览 41

window命令行打包jar文件,执行时-jar导入了清单却无法加载主类。

新手入门,今天想要尝试命令行手动打包下jar包,并直接执行jar包。
于是写了一段最经典的helloworld

public class hello{
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}
  1. 首先将java文件编译成class文件:
    E:\JDK8\jre>javac  -classpath D:\zhuomian D:\zhuomian\hello.java
    
  2. 创建manf文件:

    img

  1. 接着便开始打包jar包:

    E:\JDK8\jre>jar -cvfm   D:\zhuomian\hello.jar  D:\zhuomian\manf  D:\zhuomian\hello.class   
    
  2. 执行jar:

    E:\JDK8\jre>java -classpath D:\zhuomian -jar D:\zhuomian\hello.jar
    错误: 找不到或无法加载主类 hello
    

在网上寻找一番后,发现普遍都是由于manifest文件导致或者拥有多个jdk版本不一致导致:

  • manifest文件需注明主类入口,并且注意格式,或者打包时创建manf文件一起打包

img

而我所打的jar包已经导入了清单,并且已经设别出我想要的主入口信息,应该不是这个问题,另外jdk我也只装了一个,也不是版本冲突问题。

在操作过程中,我发现-jar 大概映射的就是manifest里设定的主入口信息,于是我直接不用-jar,直接填入我需要的主入口:

E:\JDK8\jre>java -classpath D:\zhuomian -jar D:\zhuomian\hello.jar
错误: 找不到或无法加载主类 hello
E:\JDK8\jre>java -classpath D:\zhuomian hello D:\zhuomian\hello.jar
Hello World

结果成功执行,因此很疑惑为什么-jar明明映射的也是我想要的入口,但却无法找到或加载?

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-12-06 12:39
    关注

    你的jar包应该是没打好的。
    测试一个jar包,直接通过 java -jar jar包测试。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月6日
  • 修改了问题 12月6日
  • 创建了问题 12月6日

悬赏问题

  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口