`

运行jar包时提示 Failed to load Main-Class manifest attribute from.

    博客分类:
  • Java
阅读更多
今天调式程序时出现这样的错误提示,在网上搜了下,找到下面的文章,问题解决,就是MANI-FEST.MF文件结尾少了一个 回车换行,导致文件不可识别,转帖中是manifest.txt,起的作用和MANI-FEST.MF一样。

http://blog.163.com/cjh7770996@126/blog/static/2246189220093289548548/

今天看HeadFirst的Java看到了第17章“发布程序”,本来还以为蛮简单的,当亲自上机实验,以包去创建可执行的jar时就出现问题了。

  首先我手工建立好我的工程MyProject,其实就是建立一个名为MyProject的文件夹,然后在该文件夹下再创建source文件夹,然后就是你喜欢的包名,我地是com.jo 那么就是在source下再创建com文件夹,com下再创建jo文件夹,然后就是我地源文件了,我建一个名为Test.java的源文件,然后简单的写下一下代码做测试:

------------------------------------------------------------------------------

package com.jo;

public class Test {
 public static void main(String args[]){
  System.out.println("Testing");
 }
}


--------------------------------------------------------------------------------

  OK,然后就运行CMD(我的操作系统是windows当然就是CMD了,而且我已经配置好我的java环境变量了)。进入到工程文件下的source文件夹:

cd MyProject/source

  接着就是编译文件,我采用了书中所建议的文件组织方式,就是源代码放在source文件夹中,然后编译过的文件就放在classes文件夹中

javac -d ../classes com/jo/Test.java (编译此目录下的所有源文件则输入:javac -d ../classes com/jo/*.java)

  书中提到如果还没有建立好对应的输出目录结构,只要加上-d,编译器会自动建立相应的目录结构,但起码要建立"classes"文件夹。

  然后要执行程序就需要进入到classes目录下,运行:

java com.jo.Test

  运行顺利的话就会在命令提示符下看到Testing.

  接着就是以包来创建可执行的jar

  步骤一:

  确认所有的类文件都在classes目录下,并且对应的包结构都正确。

  步骤二:

  创建manifest.txt文件来描述哪个类带有main(),以及确认有使用完整的类名称

  在manifest.txt中写入一行:

  Main-Class: com.jo.Test

  然后把manifest.txt文件放入classes目录下

注:这里代码最后一定要加入换行符,就是回车。否则打包的时候是可以通过,但是无法识别的,最后执行jar文件的时候会提示:Failed to load Main-Class manifest attribute from ...虽然现在我们编程的时候大多时候都会用到IDE,但这是基础,我个人认为有必要去了解。

  最后命令提示符里进入到classes目录,

  cd MyProject/classes

  然后打包:

  jar -cvmf manifest.txt myjar.jar com

  关于jar后的参数,如果是有Unix或Linux经验的话,估计是很了解的,然后最后的那个com,是指定目录之用,无需是完整的。

  最后的最后,当我们需要执行这个jar文件的时候,就输入:

java -jar myjar.jar
分享到:
评论
1 楼 zjsrustar 2012-02-01  
  步骤二:

  创建manifest.txt文件来描述哪个类带有main(),以及确认有使用完整的类名称

  在manifest.txt中写入一行:

  Main-Class: com.jo.Test

Main-Class: 空格+类名  浪费了一点时间的

相关推荐

    免费 openssh-9.0p1-1.el7.x86_64 for RHEL/CentOS 7 升级RPM包

    -rw-r--r--. 1 root root 4239360 Jun 25 16:54 openssh-9.0p1-1.el7.x86_64.rpm -rw-r--r--. 1 root root 654600 Jun 25 16:51 openssh-clients-9.0p1-1.el7.x86_64.rpm -rw-r--r--. 1 root root 3108976 Jun 25 16...

    org.apache.commons.lang jar包下载(commons-lang3-3.1.jar)

    必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE.txtMETA-INF/NOTICE.txtorg.apache.commons.lang.ArrayUtils.class org.apache.commons.lang.BitField....

    perl-ExtUtils-Manifest-1.61-244.el7.noarch.rpm

    离线安装包,亲测可用

    cxf+spring webservice jar包

    cxf-manifest.jar cxf-services-sts-core-2.6.3.jar cxf-services-wsn-api-2.6.3.jar cxf-services-wsn-core-2.6.3.jar cxf-xjc-boolean-2.6.0.jar cxf-xjc-bug671-2.6.0.jar cxf-xjc-dv-2.6.0.jar cxf-xjc-runtime-...

    cluster-glue-libs-1.0.5-6.el6.i686.rpm

    cluster-glue-libs-1.0.5-6.el6.i686.rpm是centos工具包。

    MDC_Manifest_Configurator-Ubuntu18-1.0.101.1.tar.gz

    《智能驾驶:MDC Manifest Configurator在Ubuntu 18上的应用与详解》 在智能驾驶领域,高效、安全的系统配置至关重要。MDC(Mobileye Drive Compute)是英特尔Mobileye公司推出的高性能计算平台,用于自动驾驶车辆...

    hibernate-commons-annotations-5.0.1.Final.jar

    其中,`MANIFEST.MF`文件记录了jar文件的基本信息,如版本、作者等。此外,`services`子目录下可能包含`javax.persistence.spi.PersistenceProvider`等服务配置文件,指示了Hibernate Commons Annotations作为JPA...

    axiom-api-1.2.12.jar.zip

    在Java环境中,JAR文件(Java ARchive)实质上就是一种特殊的ZIP文件,包含Java类、资源文件以及元数据,如MANIFEST.MF文件,用于描述JAR的内容和依赖。 使用"axiom-api-1.2.12.jar.zip"时,开发人员通常需要先解压...

    PyPI 官网下载 | easy-module-attribute-getter-0.9.37.tar.gz

    此外,通过运行`python setup.py install`或利用pip工具(`pip install path/to/easy-module-attribute-getter-0.9.37.tar.gz`),可以在本地环境中安装这个库。 总的来说,"easy-module-attribute-getter"是一个...

    start-0.0.1-SNAPSHOT.jar

    需要测试的springboot项目,过程中遇到了idea打jar包,应为MANIFEST.MF 文件夹和 MANIFEST.MF 文件不在项目根目录下,导致多次 在本地 java -jar 运行jar包失败,当然放到docker 里作为容器启动也是失败的,后来在 ...

    mysql-connector-java-8.0.19.zip

    在描述中提到,当使用Java通过JDBC访问MySQL数据库时,需要在Java工程中引入这个jar包。这个jar包包含了所有必要的类和资源,例如`com.mysql.cj.jdbc.Driver`,这是MySQL Connector/J的主要入口点,Java应用程序通过...

    apache-ant-zip-2.3.jar.zip

    - `manifest`: 可以在ZIP文件中添加或修改MANIFEST.MF文件,这对于制作符合Java应用规范的JAR文件尤其有用。 这些功能使得Apache Ant成为Java开发中的强大工具,尤其是在自动化构建过程中处理ZIP文件时。不过,由于...

    ubuntu-22.04-preinstalled-server-arm64+raspi.img.xz

    ubuntu-22.04-preinstalled-server-arm64+raspi.img.xz http://cdimages.ubuntu.com/ubuntu/releases/22.04/release/

    hibernate-core-5.0.11.Final.jar

    1. **META-INF**:这是JAR文件的标准目录,包含MANIFEST.MF文件,记录了jar的基本信息,如主类、依赖库等。 2. **org.hibernate**:这是核心代码所在的主要包,下辖多个子包,涵盖了Hibernate的所有核心功能,如: ...

    spark2-2.4.0.cloudera2-1.cdh5.13.3.p0.1041012-el6.zip

    在压缩包中,"SPARK2_ON_YARN-2.4.0.cloudera2.jar"是Spark在YARN上的运行时JAR文件,包含了运行Spark应用程序所需的依赖。"manifest.json"通常包含有关软件包的信息,如版本、依赖项等,对于CDH环境来说,它可能是 ...

    JDBC连接jar包mysql-connector-8.0.15.rar

    2. **MANIFEST.MF文件**:在创建可执行JAR文件时,可以在MANIFEST.MF文件中指定依赖的库,确保运行时能找到JDBC驱动。 3. **使用Maven或Gradle**:在项目构建配置文件中(如pom.xml或build.gradle),声明对mysql-...

    flink-1.14.4-scala_2.12 + CDH6.2.1 版 parcel 包

    flink-1.14.4-scala_2.12 + CDH6.2.1 版 parcel 包, 包含 FLINK-1.14.4-BIN-SCALA_2.12-el7.parcel FLINK-1.14.4-BIN-SCALA_2.12-el7.parcel.sha manifest.json (以上三个文件放入 /opt/cloudera/parcel-repo/ 下...

    mysql-connector-java-8.0.13.jar mysql数据库驱动下载

    3. **MANIFEST.MF**: 如果你正在创建一个可执行的JAR文件,可以在`MANIFEST.MF`文件中指定`Class-Path`属性来包含此驱动。 4. **Maven/Gradle**: 如果你的项目使用构建工具,如Maven或Gradle,可以在pom.xml或build....

    mysql-connector-java-5.1.32.tar.gz

    对于传统的Java应用,这可以通过设置`CLASSPATH`环境变量或在`MANIFEST.MF`文件中指定`Class-Path`来实现。对于现代的Maven或Gradle项目,可以直接在构建配置中声明依赖。 使用MySQL Connector/J的基本步骤如下: ...

    WIN7下运行Jar文件提示Could not find the main class

    在Windows 7系统下运行Java应用包(JAR文件)时遇到“Could not find the main-class”错误,是常见的问题之一。这个问题通常出现在尝试启动一个没有正确指定主类的JAR文件时。主类是包含main方法的类,它是程序执行...

Global site tag (gtag.js) - Google Analytics