一.命令行执行class文件
在d:/test/lib目录下,有一个Mains.java文件
使用命令javac编译,执行成功:
D:\test\lib>javac Mains.java
此时使用java命名行运行编译后的class文件,则报NoClassDefFoundError错误:
D:\test\lib>java Mains Exception in thread "main" java.lang.NoClassDefFoundError: Mains Caused by: java.lang.ClassNotFoundException: Mains at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
出现该异常,是因为环境变量不正确,将命令改为:
D:\test\lib>java -cp . Mains
则运行成功。
然后修改Mains.java源文件,在其中增加包说明:
package com.zhendao
重新编译后,使用java -cp . Mains命令,执行失败。原因是名称错误,JVM运行class时,会检查包定义路径下是否有与类名相同的文件。因此这次需要将class文件放在 com/zhendao目录下。即:D:/test/lib/com/zhendao/Mains.class
然后在lib目录下重新运行:
D:\test\lib>java -cp . com/zhendao/Mains
二.命令行执行jar文件
命令行执行jar文件与执行class文件类似。不过有几个问题要注意一下:
1.如果使用eclipse打jar包,一定要设置Main Class:
设置Main Class目的在于,运行jar包时,才能找到程序执行的入口。设置后,可在jar中(使用解压工具打开)有一个名META-INF的目录,该目录下有一个名为MANIFEST.MF的文件,其内容如下:
Manifest-Version: 1.0 Main-Class: com.zhendao.Main
如果在打jar时没有设置Main Class,则该文件中没有Main-Class:com.zhendao.Main信息。
2.如果被执行的jar包还需要依赖其他第三方jar例如日志jar包或者数据库驱动jar包时,则需要手工修改上述的MANIFEST.MF文件,在其中增加Class-Path配置:
Class-Path: log4j-1.2.14.jar ojdbc14.jar
注意:多个jar之间使用空格分隔开。
然后使用命令执行jar包:
D:\test\lib>java -jar nr_daybar.jar
(其中的nr_daybar.jar是笔者打的示例jar包的名字)
另外,在网上查找资料时,看见有其他人并没有在MANIFEST.MF设置Class-Path,而是在执行java运行命令前,设置了环境变量
相关推荐
当我们运行一个JAR文件时,Java虚拟机(JVM)会加载其中的class文件并执行其中的代码。 修改JAR文件中的class文件涉及以下几个步骤: 1. **解压JAR文件**:使用解压缩工具(如WinRAR、7-Zip或命令行的jar命令)将...
将class文件打包成jar文件是Java开发中常见的需求,尤其在使用WebService的SOAP协议时,为了实现远程调用,往往需要将本地的类文件(.class)打包成jar包进行分发。本文将深入探讨这一过程,包括手动压缩和利用...
在命令行执行MBG,你需要指定`mybatis-generator.xml`的位置,然后调用Java的`-jar`选项运行MBG: ```bash java -jar mybatis-generator-core1.4.0.jar -configfile mybatis-generator.xml -verbose ``` 这将会根据...
在Java开发过程中,`jar`(Java Archive)文件是一种重要的归档格式,它用于集合多个`.class`文件,也就是编译后的Java源代码,形成一个单一的可执行文件。这有助于减少部署应用程序所需的资源数量,并方便分发。当...
标题中的“用java写的日历class文件和jar文件”表明这是一个使用Java语言编写的日历应用,它包含了源代码以及编译后的可执行版本。这个程序可能是一个简单的命令行工具,也可能具有图形用户界面(GUI),用于展示和...
对于可执行的JAR文件,其中的`Main-Class`属性尤为重要,用于指定主类,即包含`main`方法的类。 #### 打包散落的单个或几个Class文件 假设你有以下两个`.class`文件: - `TurnD.class` - `TurnB.class` 它们位于`...
总之,熟练掌握DOS命令来测试Java JAR文件和运行JUnit测试是Java开发者日常工作中不可或缺的部分。无论是进行简单的单个测试还是复杂的持续集成流程,都能大大提高代码质量并减少错误。通过不断地实践和学习,你可以...
在日常的软件开发过程中,我们经常需要将编写的Java程序打包为可执行的JAR文件,并且能够在命令行环境中直接运行这些程序。这种方式不仅可以提高工作效率,还便于进行自动化部署与测试。本文将详细介绍如何在命令行...
3. **运行XJad**:使用命令行界面运行XJad,指定要反编译的.class文件路径。 4. **查看结果**:XJad会生成一个反编译后的源代码文件,通常以.java为扩展名。这些文件可以使用文本编辑器打开查看。 5. **处理子文件夹...
在命令行中,也可以使用以下命令来执行JAR文件: ``` java -jar test.jar ``` 这会根据`MANIFEST.MF`中的`Main-Class`启动程序。 **JAR文件的优势** - **跨平台性**:由于Java的“一次编写,到处运行”原则,JAR...
制作完成的jar文件就是可执行的,使用命令行执行java –jar AAA.jar或javaw –jar AAA.jar就可以看到该程序被成功执行了。 十一、使用.bat文件执行jar文件 也可以为每一个可执行的jar文件创建一个.bat文件,其中的...
`.jar`文件则是一个集合,可以包含多个`.class`文件和其他资源,通常用于打包和分发Java应用程序或库。在某些情况下,我们可能需要查看或理解这些二进制文件的原始Java代码,这时就需要用到"Class文件反编译工具"。 ...
而这个“class、jar文件编译器”工具,可能就是一款整合了这些功能的实用软件,提供了便捷的编译和反编译解决方案,使得开发者无需记住复杂的命令行参数,只需通过图形用户界面就能完成相关操作。 总之,`class`和`...
jar命令是Java开发工具箱中的一个命令行工具,用于创建、管理和操作JAR文件包。jar命令的基本语法如下: jar [-options] [jar-file] [manifest-file] [input-files] 其中,options是jar命令的选项,jar-file是生成...
Java 程序通常以字节码(.class)的形式存在,为了便于分发和管理,我们可以将其打包成 JAR(Java Archive)文件。JAR 文件不仅是一个压缩格式,类似于 ZIP,它还包含了一个名为 `META-INF/MANIFEST.MF` 的特殊文件...
在Java开发中,`.jar` 文件(Java归档文件)是一种重要的打包格式,它不仅能够将多个 `.class` 文件封装在一起,还能包含资源文件和其他元数据,使得应用程序更易于部署和分发。下面我们将详细介绍如何创建 `.jar` ...
可执行JAR(Java Archive)文件是Java编程语言中的一种归档格式,它允许将多个类文件和其他资源打包成一个单一的文件,便于分发和运行。在Java中,一个可执行JAR文件通常包含一个主类,这个主类包含了程序的入口点,...
本文将深入探讨如何反编译.jar文件和.java字节码文件(即.class文件),以便理解并可能修改已编译的Java代码。 首先,我们要明白什么是.jar文件和.class文件。.jar文件是Java档案文件,它包含一个或多个类文件,...
### Java反编译工具:将.class文件转换为.java文件 #### 概述 在软件开发领域,有时我们可能需要分析第三方库或者开源项目的内部结构,这时就需要借助于反编译工具来帮助我们阅读和理解其源码。Java作为一种广泛...