java - java jar 的 list 属性

标签 java manifest.mf

在您的帮助下,我完成了我的第一个 Java 项目。现在我想创建一个 jar 并从 jar 运行应用程序(Java 项目 - 它是一个普通的控制台应用程序,它有另一个项目(控制台应用程序)作为依赖项)。

我通过右键单击 - 导出 - 创建一个 jar 使用 eclipse 创建了一个 jar。当我尝试从 cmd 运行这个 jar 时,出现错误(下面是我收到的错误)

no main manifest attribute, in AAA.jar

我在 Google 上搜索了错误 - 大多数都需要创建 Manifest 文件。我在项目中创建了一个如下所示的 list 文件,等于 src 级别

Manifest-Version: 1.0
Main-Class: com.Pacakename.mainclass
Class-Path: log4j-1.2.16.jar db2jcc.jar db2jcc_license_cu.jar

然后 J 再次尝试运行 jar,但这次它说没有 main 方法,而我在类中有一个 main 方法

请有人解释一下创建 list 的清晰步骤(如果你向我展示 list 文件所在位置的文件夹结构,这对我真的很有帮助)

最佳答案

假设您有以下目录结构:

MyJavaProject
   |-src 
      |- com
          |- example
               |- Main.java

要在命令行中编译此类项目,(无外部依赖项)您需要调用命令

$ cd MyJavaProject
$ mkdir bin         //to separate *.class file from source files
$ javac -d bin src\com\example\Main.java

这将在 bin 目录中创建 Main.class 文件。要将其打包到 *.jar 文件,您可以: 1)用二进制文件创建jar并在cmd中指定Main类 2)创建Manifes并将其嵌入到jar中(我将重点关注这个)

您应该在src下创建META-INF目录,并在其中创建MANIFEST.mf文件

您的 list 应如下所示:

Manifest-Version: 1.0
Created-By: <Your info>
Main-Class: com.example.Main

记住在 list 末尾添加空行!!

在本例中,您指定 Manifest-Version 属性、Created-By 属性以及要在 Main-Class< 中运行的主类的完全限定名称 属性

要使用此 list 文件和二进制文件创建 Jar,请调用命令

$ cd bin
$ jar cfm MyJavaProject.jar ..\src\META-INF\MANIFEST.MF .

这将创建名为 MyJavaProject.jar 的新 jar 并使用您的 list

如果您的项目依赖于外部类或 jar,请在编译时将它们添加到类路径中(-cp 选项),并在 Manifest 中添加另一行

ClassPath: path/to/dependent/jars/jar.jar

重新编译它并创建新的 jar 并享受您的 Java 任务:)

有关 list 的更多信息,请参阅:docs

PS:使用 jars,命令行中的 amnifest 可能看起来很难看,但它可以教你一些类似 ava 的概念。如果您想跳过它,请考虑使用 Apache MavenApache Ant

关于java - java jar 的 list 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096587/

相关文章:

maven-ear-plugin - 如何操作 webModule 和 ejbModule 的 Manifest.MF?

java - 打印范围,如果缺少数字

java - 如何在 IntelliJ IDEA 中获得实际的代码覆盖率报告?

java - NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE

java - META.MF 已存在于 IntelliJ Idea 中的 VCS 中

java - 当 MANIFEST.MF 中列出该类时,为什么我的 jar 会生成 NoClassDefFoundError?

java - 文件对象是否支持所有文件(键盘、目录、文件等)?

java - Spring 轮廓模糊性

java - 如何: Locate a Resource file within a JAR file without knowing the name and location upfront

java - 如何在 Eclipse 中使用自己的 MANIFEST.MF 构建 jar