有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

包结构的java Jar执行错误

我试图创建一个jar,并为包结构的java程序执行它。我可以创建jar,但我正在执行它 投掷错误

文件夹结构:Java_示例>;包装>;A.java

package pack;  
public class A{  
  public void msg(){System.out.println("Hello");}  
}

文件夹结构:Java_示例>;mypack>;B.java

package mypack;  
import pack.*;  

class B{  
  public static void main(String args[]){  
   A obj = new A();  
   obj.msg();  
  }  
}

文件夹结构:Java_示例>;bin>;显示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

尝试通过给出main类来执行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

共 (2) 个答案

  1. # 1 楼答案

    不能使用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

  2. # 2 楼答案

    你把jar文件建错了。从基本文件夹执行此操作,并添加m选项,以指定在jar文件名之后列出清单文件(因为fm之前)

    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
    

    如果您想将jar文件放在bin文件夹中,您当然只需要对其进行限定:

    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