为了账号安全,请及时绑定邮箱和手机立即绑定

包结构的 Jar 执行错误

包结构的 Jar 执行错误

德玛西亚99 2023-06-14 10:38:41
我正在尝试创建一个 jar 并为包结构化 java 程序执行它。我能够创建 jar,但我正在执行它的抛出错误。文件夹结构:Java_Example > pack > A.javapackage pack;  public class A{    public void msg(){System.out.println("Hello");}  }文件夹结构:Java_Example > mypack > B.javapackage mypack;  import pack.*;  class B{    public static void main(String args[]){     A obj = new A();     obj.msg();    }  }文件夹结构:Java_Example > bin > Manifest.txtMainfest-Version: 1.1Main-Class: mypack.B清单文件与换行符一起存在从命令行执行E:\Java_Example\bin>java -cp E:\Java_Example mypack.BHello创建罐子E:\Java_Example\bin>jar cvf MyJar.jar Manifest.txt E:\Java_Example\pack\A.clasE:\Java_Example\mypack\B.classadded manifestadding: Manifest.txt(in = 60) (out= 61)(deflated -1%)adding: Java_Example/pack/A.class(in = 376) (out= 268)(deflated 28%)adding: Java_Example/mypack/B.class(in = 307) (out= 237)(deflated 22%)执行罐      E:\Java_Example\bin>jar -jar MyJar.jar       Illegal option: jUsage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...java -jar 命令执行E:\Java_Example\bin>java -jar MyJar.jarno main manifest attribute, in MyJar.jar尝试通过给主类执行 JarE:\Java_Example\bin>jar -cp MyJar.jar mypack.BIllegal option: pUsage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...jar -tf 输出E:\Java_Example\bin>jar -tf MyJar.jarMETA-INF/META-INF/MANIFEST.MFManifest.txtJava_Example/pack/A.classJava_Example/mypack/B.class
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您构建的 jar 文件错误。从基本文件夹执行此操作,并添加选项m以指定您在 jar 文件名之后立即列出清单文件(因为f在 之前m)。


E:\Java_Example>jar cvfm MyJar.jar bin\Manifest.txt pack\A.class mypack\B.class

added manifest

adding: pack/A.class(in = 376) (out= 268)(deflated 28%)

adding: mypack/B.class(in = 307) (out= 237)(deflated 22%)

如您所见,类文件现在已正确限定,并且没有说明是adding: Manifest.txt因为该文件现在是manifest.


现在你像这样运行它:


java -jar MyJar.jar

如果你想要 bin 文件夹中的 jar 文件,你当然只需符合以下条件:


E:\Java_Example>jar cvfm bin\MyJar.jar bin\Manifest.txt pack\A.class mypack\B.class

E:\Java_Example>java -jar bin\MyJar.jar


查看完整回答
反对 回复 2023-06-14
?
倚天杖

TA贡献1828条经验 获得超3个赞

您不能使用jar命令运行 jar,java而是使用。对于您编辑的问题,清单不在正确的位置。查看 jar 提取的输出:


E:\Java_Example\bin>jar -tf MyJar.jar

META-INF/

META-INF/MANIFEST.MF

Manifest.txt

Java_Example/pack/A.class

Java_Example/mypack/B.class

你不应该有Manifest.txt,清单是MANIFEST.MF


查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信