Java Jar程序通过cmd与Jar进行比较

Java Jar程序通过cmd与Jar进行比较,java,jar,manifest,programmatically-created,Java,Jar,Manifest,Programmatically Created,我正在尝试以编程方式创建工作.jar文件。 首先,我生成.class文件,然后将其放入我的JarEntry中,如下所示: FileOutputStream stream = new FileOutputStream(jarFile); JarOutputStream output = new JarOutputStream(stream, manifest); JarEntry entry = new JarEntry(token.getPackage().getName().replace("

我正在尝试以编程方式创建工作.jar文件。 首先,我生成.class文件,然后将其放入我的JarEntry中,如下所示:

FileOutputStream stream = new FileOutputStream(jarFile);
JarOutputStream output = new JarOutputStream(stream, manifest);
JarEntry entry = new JarEntry(token.getPackage().getName().replace(".", File.separator).concat(File.separator).concat(exactName).concat(".class"));
output.putNextEntry(entry);

BufferedInputStream in = new BufferedInputStream(new FileInputStream(pathToClass.concat(exactName).concat(".class")));
 byte [] buffer = new byte[1024];
 int read = 0;
 while(true) {
     read = in.read(buffer);
     if(read < 0)
         break;
     output.write(buffer, 0, read);
 }

 output.closeEntry();
 output.close();
 in.close();
我的manifest.txt文件:

Manifest-Version: 1.0
Class-Path: ..\artifacts\ImplementorTest.jar
Main-Class: javax.xml.bind.ElementImpl
所以output.jar文件的大小大约有100字节(由“jar..”生成的jar文件更大)。而且,以编程方式生成的.jar文件不起作用。 这种行为的原因是什么
已知的问题是自动生成的jar文件中的“Created By:1.8.0_20(Oracle Corporation)”行。但我所说的jar文件具有相同的清单文件和.class文件。

,而且以编程方式生成的.jar文件不起作用。你说不工作是什么意思<代码>已知问题是“Created By:1.8.0_20(Oracle Corporation)
这是什么意思?我的意思是它失败了,因为“找不到或加载主类javax.xml.bind.ElementImpl”。但是由cmd文件生成的文件可以找到该文件并执行它。”创建人。。“字符串将一些字节添加到.jar文件中。我的差异是在去掉那根线后测量出来的。清单文件相等。您确定清单相同吗?jar的文件结构是什么?jar中的实际文件是什么?
Manifest-Version: 1.0
Class-Path: ..\artifacts\ImplementorTest.jar
Main-Class: javax.xml.bind.ElementImpl