包结构的 Jar 执行错误

我正在尝试创建一个 jar 并为包结构化 java 程序执行它。我能够创建 jar,但我正在执行它的抛出错误。


文件夹结构:Java_Example > pack > A.java


package pack;  

public class A{  

  public void msg(){System.out.println("Hello");}  

}

文件夹结构:Java_Example > mypack > B.java


package mypack;  

import pack.*;  


class B{  

  public static void main(String args[]){  

   A obj = new A();  

   obj.msg();  

  }  

}

文件夹结构:Java_Example > bin > Manifest.txt


Mainfest-Version: 1.1

Main-Class: mypack.B

清单文件与换行符一起存在


从命令行执行


E:\Java_Example\bin>java -cp E:\Java_Example mypack.B

Hello

创建罐子


E:\Java_Example\bin>jar cvf MyJar.jar Manifest.txt E:\Java_Example\pack\A.clas

E:\Java_Example\mypack\B.class

added manifest

adding: 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: j

Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] f

iles ...

java -jar 命令执行


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

no main manifest attribute, in MyJar.jar

尝试通过给主类执行 Jar


E:\Java_Example\bin>jar -cp MyJar.jar mypack.B

Illegal option: p

Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] f

iles ...

jar -tf 输出


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


德玛西亚99
浏览 120回答 2
2回答

慕姐4208626

您构建的 jar 文件错误。从基本文件夹执行此操作,并添加选项m以指定您在 jar 文件名之后立即列出清单文件(因为f在 之前m)。E:\Java_Example>jar cvfm MyJar.jar bin\Manifest.txt pack\A.class mypack\B.classadded manifestadding: 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.classE:\Java_Example>java -jar bin\MyJar.jar

倚天杖

您不能使用jar命令运行 jar,java而是使用。对于您编辑的问题,清单不在正确的位置。查看 jar 提取的输出:E:\Java_Example\bin>jar -tf MyJar.jarMETA-INF/META-INF/MANIFEST.MFManifest.txtJava_Example/pack/A.classJava_Example/mypack/B.class你不应该有Manifest.txt,清单是MANIFEST.MF
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java