当前位置: 首页 > 面试题库 >

Java jar的清单属性

连志义
2023-03-14
问题内容

在您的所有帮助下,我得以用Java完成我的第一个项目。现在,我想创建一个jar并运行jar中的应用程序(Java项目-
这是一个普通的控制台应用程序,该应用程序依赖于另一个项目(控制台应用程序))。

我通过右键单击创建了一个带有Eclipse的罐子-导出-创建了一个罐子。当我尝试从cmd运行此jar时,出现错误(以下是我得到的错误)

no main manifest attribute, in AAA.jar

我用Google搜索了错误-他们中的大多数人都创建了清单文件。我在项目中创建了一个清单文件,如下所示,该文件等于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方法

请有人请说明创建清单的一个明确步骤(如果您向我展示我们拥有清单文件的地方的文件夹结构,这对我很有帮助)


问题答案:

假设您具有以下目录结构:

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

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

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

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

您应该在其META-INFsrc并在其中创建MANIFEST.mf文件的目录中创建目录

您的清单应如下所示:

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

请记住在清单末尾添加空行!!

在这种情况下,您可以指定Manifest-Version属性,Created-By属性以及要在Main-Class属性中运行的主类的完全限定名称

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

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

这将创建新的jar MyJavaProject.jar并使用您的清单

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

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

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

有关清单的更多信息,请参见:docs

PS:使用罐子,从cmd行进行放大似乎很丑陋,但是它可以教您一些类似ava的概念。如果要跳过它,请考虑使用Apache
Maven
或Apache Ant



 类似资料:
  • 问题内容: 我是Java的新手,我需要列出列表列表。我可以在python中做到这一点,因为列表的元素可以是列表,因此在嵌入式列表中将引用列表,并且将引用嵌入式列表的zeroeth元素。有什么简单的方法可以在Java中实现此行为? 问题答案: 所有其他答案在技术上都是正确的,但是恕我直言,如果您实施了粗略的列表列表,您将无法在正确的抽象级别上处理数据。例如,我很确定列表列表在您的业务领域中已经意味着

  • 我正在用Gradle构建一个JAR文件。当我尝试运行它时,我得到了错误 RxJavaD中没有主清单属性emo.jar 我试图操纵清单属性,但我想我忘记向它添加依赖项或其他东西了。我到底做错了什么?

  • 我有以下build.xml代码。在这里,我在jar文件中修改了清单文件。在清单中,我想添加一些属性,例如资产名称和资产基线。 buildInfo的内容。属性如下: build.xml:我想动态传递名称,即 articlelib 值,并从 buildInfo.properties 中检索值。我在清单外部使用了宏元数据,它是工作文件,但当我在清单标签中使用相同的时,我无法使用它。我是否可以解决此问题或

  • 当运行我的jar文件:java-jar target/places-1.0-snapshot.jar时,我得到了下一个错误: 我的pom.xml包含spring-boot-maven-plugin: 知道我还能试试什么吗?

  • 当项目从IDE执行时,是如何创建的,以便真正运行Hello world类型的控制台应用程序? 显然,只需要为清单指定条目。 只需关注阶段: 运行Maven工具Maven阶段 虽然不是一个全面的列表,但这些是执行的最常见的默认生命周期阶段。 验证:验证项目是否正确,所有必要的信息是否可用编译:编译项目的源代码测试:使用合适的单元测试框架测试编译的源代码。这些测试不应该要求将代码打包或部署到包中:将编

  • 问题内容: 我最近刚开始在Java中玩Maven。是时候测试我的项目了,它在NetBeans窗口中运行正常,运行在App.java(com.MyCompany.App)中找到的主类,但是当我尝试从命令行运行它时,出现了一个错误: fileName.jar中的“无主要清单属性” 我尝试添加一个manifest.mf文件来指定主要文件,我也进入了项目属性并将其添加为主文件… 这是怎么回事? 问题答案: