在您的帮助下,我完成了我的第一个 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 Maven或Apache Ant
关于java - java jar 的 list 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096587/