我们平时在打jar包时会需要指定当前jar包的依赖jar包,那么我们就要在MANIFEST.MF文件的Class-Path中来声明这些包,通常可以直接手工修改jar包中的MANIFEST.MF文件,在别的jar包里如果也需要这个MANIFEST.MF文件,我们可以直接copy过去,也是可以使用的。
但是如果是用jar命令打包,指定这个手工修改得MANIFEST.MF文件,jar命令就会根据MANIFEST.MF的定义格式来重新排列MANIFEST.MF文件中的信息,造成格式混乱,有的依赖jar包在MANIFEST.MF文件有声明但是使用时仍然找不到。
我们可以利用java提供的java.util.jar.Manifest类来处理,这样可以不用考虑MANIFEST.MF的文件格式,Manifest类可以帮助我们处理,用jar命令指定MANIFEST.MF文件时也不会发生格式改变的问题
提供个我写的Manifest类得使用方法
package com.egi.core.util;
import java.io.File;
import java.io.FileOutputStream;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
public class ManifestUtil {
public static void create(String filePath, String classDir)
throws Exception {
File mfFile = new File(filePath);
if (!mfFile.exists()) {
mfFile.createNewFile();
}
FileOutputStream fos = new FileOutputStream(mfFile);
StringBuffer sb = new StringBuffer();
File classFile = new File(classDir);
int count = 0;
if (classFile.exists()) {
if (classFile.isDirectory()) {
File[] files = classFile.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].getName().endsWith(".jar")) {
count++;
sb.append(files[i].getName()).append(" ");
}
}
}
}
System.out.println("There are " + count + " jar files!");
System.out.println(sb.toString());
Manifest m = new Manifest();
Attributes a = m.getMainAttributes();
a.put(Attributes.Name.MANIFEST_VERSION, "1.0");
a.put(Attributes.Name.CLASS_PATH, sb.toString());
System.out.println("a.getValue =---------="
+ a.getValue(Attributes.Name.CLASS_PATH));
System.out.println(a.getValue(Attributes.Name.CLASS_PATH).length());
m.write(fos);
fos.flush();
fos.close();
}
}
分享到:
相关推荐
MANIFEST.MF文件是Java档案(JAR)文件格式的一部分,它包含了有关JAR文件元数据的重要信息。这篇博文可能是从其他来源转载的,用于解释这个关键文件的结构和用途。 在Java开发中,MANIFEST.MF文件是每个JAR文件...
在 Java 中,我们可以使用 `java.util.jar.Manifest` 类来处理 MANIFEST.MF 文件。以下是一个简单的读取示例: ```java try (InputStream is = new FileInputStream("path/to/MANIFEST.MF")) { Manifest manifest ...
在Android应用开发中,APK文件是应用程序的打包格式,其中包含了所有必要的资源和代码。为了确保APK的安全性和完整性,Android系统使用签名机制。在APK中,MANIFEST.MF、CERT.SF和CERT.RSA这三个文件是签名过程的...
MANIFEST.MF的正确配置对于程序的运行和打包是必不可少的。当需要对MANIFEST.MF进行汉化或定制时,hhclass汉化工具就显得非常实用。 hhclass汉化工具是一款专为Java开发者设计的工具,用于修改和汉化JAR文件中的...
例如,可以通过`java.util.jar.JarFile`类的`getManifest()`方法来访问MANIFEST文件: ```java JarFile jar = new JarFile("path/to/your.jar"); Manifest manifest = jar.getManifest(); Attributes attributes = ...
MANIFEST.MF
MANIFEST.MF.mf
标题中的“MANIFEST.MF...总的来说,MANIFEST.MF和log4j.properties是Java开发中的两个重要元素,前者关乎程序的打包和运行,后者关乎日志的管理和调试。掌握这两者,能帮助开发者更好地组织和控制他们的Java应用程序。
- 使用 `jar` 命令打包这些 `.class` 文件。`jar` 命令的格式通常是: ```bash jar cfm jarfile manifestfile classfile1 [classfile2 ...] ``` 这里: - `c` 表示创建新的 JAR 文件。 - `f` 表示指定生成的 ...
为了确保manifest.json文件的正确性,开发者可以使用在线验证工具,如Chrome的Manifest Validator。如果manifest.json存在语法错误或缺少必要字段,这些工具会给出错误提示,帮助开发者快速定位并修复问题。 总结来...
webservice CXF 报错:java.lang.NoClassDefFoundError: org/apache/neethi/builders/AssertionBuilder 需要用到此jar文件 通过apache官网可获得。 文件位置\apache-cxf-2.7.13\lib
jar cvfm hello.jar manifest.mf hello ``` 创建一个包含`manifest.mf`文件的JAR文件。`manifest.mf`文件通常包含一些元数据,如主类名、依赖项等。 8. **创建不含MANIFEST.MF文件的JAR文件** ```bash jar cv...
创建`hello.jar`时不包含`MANIFEST.MF`文件和`META-INF`目录。 9. **使用`-C`选项** ``` jar cvfm hello.jarmymanifest.mf -Chello/ ``` 先切换到`hello`目录下,再执行JAR命令,这种方式避免了JAR包中包含...
这个命令会创建一个名为`myapp.jar`的JAR文件,其中包含`com/example`目录下的所有类文件,并使用`MANIFEST.MF`作为清单文件。 3. **执行JAR文件**:运行JAR文件有几种方式: - **使用java命令**:通过指定`-jar`...
在这个命令中,cvfm是jar命令的选项,test.jar是生成的JAR文件名,manifest.mf是MANIFEST文件的名称,test是要打包的目录。 制作可执行的JAR文件包需要编辑MANIFEST文件,并使用jar命令将Java程序打包成JAR文件包。...
《jQuery Manifest 插件详解与应用实践》 在Web开发领域,jQuery库以其简洁的API和强大的功能,深受开发者喜爱。然而,随着Web应用程序变得越来越复杂,管理前端资源的依赖关系变得至关重要。这就是jQuery Manifest...
jar cvfm Test.jar META-INF\MANIFEST.MF test\* ``` 其中,`c`表示创建新文件,`v`为详细模式,`f`指定了JAR文件名,`m`用于指定清单文件,`test\*`表示将`test`目录下的所有文件添加到JAR中。 #### 三、清单...
`jar cvfm hello.jar manifest.mf hello` 创建的JAR包包含一个MANIFEST.MF文件,指定为`hello`目录下的内容。 8. **忽略MANIFEST.MF:** `jar cvfM hello.jar hello` 创建的JAR包不包含MANIFEST.MF文件。 9. *...
运行Java应用程序时,如果没有指定MANIFEST.MF中的`Main-Class`,则需要手动提供完整的类路径和主类名,例如`java -classpath myapplication.jar com.example.myapp.MyAppMain`。而有了`Main-Class`,则可以通过`...
例如,使用`jar cvfm test.jar manifest.mf test`命令,可以将test目录下的内容打包进test.jar,并指定manifest.mf作为MANIFEST文件。 2. 创建可执行的JAR文件包: 可执行JAR文件包是Java程序的常见发布形式,因为...