通过命令行运行java文件(jar、class),以及生成一个简单的jar包

2023-11-07

最近在开发中涉及到了java文件的运行,踩了一些坑,简单记录一下。

jar文件

在装有java的计算机中,要直接运行jar文件,可以用命令:

java -jar jarpath

若要指定运行类名,则用:

java -cp jarpath classname

注意:

  1. 若不在jar文件目录下运行,则jarpath需要用全路径
  2. 若类有包名,则classname要用特定的格式

class文件

在class文件所在目录下运行:

java classname

若在其他目录下运行,则需要通过classpath指定目录:

java -classpath classdir classname

注意:

  1. classname不需要加.class
  2. 若类有包名,则classname要用特定的格式
  3. classdir是class文件所在的目录

示例代码

首先编写一个简单的HelloWorld.java文件,其中包含三个类:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
class Demo{
    public static void main(String[] args) {
        System.out.println("Demo Class");
    }
}
class Demo2{
    public static void main(String[] args) {
        System.out.println("Demo2 Class");
    }
}

通过javac命令编译一下,生成三个class文件:

javac HelloWorld.java

在这里插入图片描述
通过jar命令生成jar包:

jar -cvf Hello.jar *

在这里插入图片描述
然后运行jar文件,发现会报错,显示Hello.jar中没有主清单属性
在这里插入图片描述
这时候需要去修改一下MANIFEST.MF文件:
用360压缩打开Hello.jar,找到MANIFEST.MF文件,在末尾添加一行,最后再加个回车:

Main-Class: HelloWorld

在这里插入图片描述
然后保存,再重新运行一下,发现成功了,也可以指定运行类名:
在这里插入图片描述
以上是对jar文件的测试运行,接下来测一下class文件:
在这里插入图片描述
这当然是皆大欢喜了,不过要注意的是class文件是不支持全路径运行的:
在这里插入图片描述
如果在其他目录运行,需要用classpath参数指定一下目录,即:
在这里插入图片描述
!!!注意!!!
在修改MANIFEST.MF文件的时候,用360压缩打开,直接改,不要先改后缀名,再解压,改完文件再压缩,这种方法是不行的,具体什么原因我也不是很清楚,我猜可能压缩形式不一样,这样会破坏文件。
如果用这种方法,会报错:
在这里插入图片描述
另外,有包名的类,我没有测过,有需求的可以自己去测一下!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过命令行运行java文件(jar、class),以及生成一个简单的jar包 的相关文章

随机推荐

  • 从 MySQL 到 OBOracle:如何处理自增列?

    业务需要将数据库转换为 OceanBase 数据库 但源端涉及到 Oracle 及 MySQL 两种不同数据库 需要合并为 OceanBase 中单一的 Oracle 模式 其中源端 MySQL 数据库需要改造为 OB Oracle 并做异
  • 天梯题集——复数四则运算(fabs)

    复数四则运算 include
  • K8S kube-proxy- iptable模式实现原理分析

    每台机器上都运行一个kube proxy服务 它监听api server 和endpoint变化情况 维护service和pod之间的一对多的关系 通过iptable或者ipvs为服务提供负载均衡的能力 通常kube proxy作为deem
  • mysql auto reconnect_Python mysql (using pymysql) auto reconnect

    I m not sure if this is possible but I m looking for a way to reconnect to mysql database when the connection is lost Al
  • 手把手教你解决二维数组旋转问题

    一 背景 最近做算法题发现有些题目都需要将一个数组顺时针或逆时针旋转 之前发的题解中也涉及到过这类题 但没有细讲 在这里讲一下思路 手把手带你找到对应关系 本文代码示例均使用java 但重要的是思路 思路 思路 与语言无关 如果大家不明白我
  • 大厂怎么做Code Review?

    发现坏味道的实践 就是Code Review 对计算机源代码系统化地审查 常用软件同行评审的方式进行 其目的是在找出及修正在软件开发初期未发现的错误 提升软件质量及开发者的技术 团队对 CR本身的理解有差异 有的团队 在一个完整的开发周期结
  • Java中的内存分配

    Java把内存划分成两种 一种是栈内存 一种是堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配 当在一段代码块定义一个变量时 Java就在栈中为这个变量分配内存空间 当超过变量的作用域后 Java会自动释放掉为
  • @Profile使用场景

    文章目录 前言 一 Profile注解介绍 二 Profile注解使用 1 环境搭建 2 根据环境注册bean 前言 在实际的企业开发环境中 往往都会将环境分为 开发环境 测试环境和生产环境 而每个环境基本上都是互相隔离的 也就是说 开发环
  • java 五笔码+拼音码

    原文 java js 汉字对应拼音码 五笔码转换 五笔码 package com zdww chis demo import java util Locale public class Wbm private static String W
  • crout分解计算例题_初中数学因式分解习题大全(建议父母给孩子收藏直接打印)...

    一 填空题 共10小题 1 已知x y 10 xy 16 则x2y xy2的值为 2 两位同学将一个二次三项式分解因式 一位同学因看错了一次项系数而分解成2 x 1 x 9 另一位同学因看错了常数项分解成2 x 2 x 4 请你将原多项式因
  • 证券IT:冬虫夏草之技术路线图

    冬虫夏草之技术路线图 原创 杨松 新金融世界 7月18日 作为一名28年证券机构从业经历的老兵 杨松一直在观察和研究IT技术对金融机构的业务重构 以及证券业务变革相关的内容 今天 让我们来看看这位金融业内人士如何利用他28年的行业积累 通过
  • Idea中导入maven项目自动配置maven设置

    经常导入项目后需要在setting中设置maven 1 file gt setting中设置当前项目的maven配置 配置后 再次导入项目将以次设置为默认的maven设置 2 设置导入maven项目的默认maven配置
  • Day29_10 JavaWeb之Servlet及Servlet细节

    目录 一 Servlet Servlet的概述 Servlet的三种使用方式 Servlet的生命周期 二 Servlet中的其他对象 ServletConfig 对象 没什么大用 了解即可 ServletContext最大域对象 Appl
  • 运行中的docker修改配置文件

    运行中的docker修改配置文件 背景 环境 修改 yshop redis 在docker启动后可以自动启动 背景 在作测试的时候 遇到一个问题 docker 跑起来了 配置呀 数据导入呀都搞好了 突然发现 端口没有作映射 mysql5 7
  • yolov8系列[四]-yolov8模型部署

    yolov8系列 四 yolov8模型部署jetson平台 jetson平台 0 安装环境 1 下载源代码 2 pt 转换模型转换为 onnx 模型 3 配置deepstream yolo 4 运行 jetson平台 0 安装环境 下载to
  • 常用Linux的ssh远程终端连接工具

    1 putty 说明 putty是最简单的SSH工具 无需安装 支持多系统版本 下载后就可以直接使用 优点 1 免费 2 免安装 缺点 1 不支持标签模式 2 默认设置不友好 很多功能都需要额外配置才行 例如自动登录功能 3 不能传输文件
  • SCP 命令

    svn 删除所有的 svn文件 find name svn type d exec rm fr linux之cp scp命令 scp命令详解 2011 03 09 17 27 22 分类 Linux 标签 linux cp scp comm
  • 管理学经典定理汇粹

    一 素养 蓝斯登原则 在你往上爬的时候 一定要保持梯子的整洁 否则你下来时可能会滑倒 提出者 美国管理学家蓝斯登 点评 进退有度 才不至进退维谷 宠辱皆忘 方可以宠辱不惊 卢维斯定理 谦虚不是把自己想得很糟 而是完全不想自己 提出者 美国心
  • SVN下最高效打基线方法

    作者 张克强 作者微博 张克强 敏捷307 2014 7 6 方法一来自于我的一条微博 组织级scm建一个名为controlled的目录 当项目某文档通过评审后 组织级scm从项目目录下找到那文档 复制到controlled目录下 请 sc
  • 通过命令行运行java文件(jar、class),以及生成一个简单的jar包

    最近在开发中涉及到了java文件的运行 踩了一些坑 简单记录一下 jar文件 在装有java的计算机中 要直接运行jar文件 可以用命令 java jar jarpath 若要指定运行类名 则用 java cp jarpath classn