使用cmd命令运行java

1.普通项目(不带lib文件夹)

1.在桌面上建一个名为com的文件夹,在文件夹中用记事本写两个类文件,后缀改为.java。两个类文件的内容如下图所示:

20210619153846401.PNG

2.使用javac命令编译主函数,命令行为javac TestMain.java。结果可以看到自动生成了两个.class文件。

20210619153943133.PNG

3.使用java TestMain命令行运行程序得到运行结果如下:

20210619154222990.PNG

2.带lib文件夹的项目

实操代码:

## 编译文件
javac -d bin/ -Djava.ext.dirs=lib/ TestMain.java
## 进入编译文件的目录
cd lib
## 运行代码
java -Djava.ext.dirs=../lib/ TestMain

具体讲解:
项目结构如图:
image.png
带有一个简单的jar包

1. 首先 cd 到 java_test 工程目录下

运行如下命令:
javac -d bin/ -cp lib/junit-platform-commons-1.9.1.jar; TestMain.java

  • -d bin/ 表示把编译的文件放到 bin 目录下面,其中 bin 需要自己建立,当然,不要这个命令也可以,文件就会默认生成在当前目录位置。
  • TestMain.java为需要编译的运行文件
  • -cp lib/junit-platform-commons-1.9.1.jar;指定需要的依赖jar包的位置,多个jar使用;分割,最后一个 jar 包的 ;后需要一个空格,即和TestMain.java隔了一个空格
  • 提示:-cp lib/junit-platform-commons-1.9.1.jar;命令可以换成 -Djava.ext.dirs=lib/
    • -Djava.ext.dirs 是设置 lib 包所在的目录

ok 看下编译好的文件
image.png
ok 接下来 运行项目

  1. **先进入 bin 目录 ****cd bin**
  2. **运行项目 **java -cp ../lib/gson-2.10.1.jar; TestMain

项目运行如下
image.png
ok 一个简单的java 工程就运行完了
但是 貌似有些繁琐, 需要手动键入 java文件 以及相应的jar包 很是麻烦,
so 可以用 shell 来脚本来简化相关操作
shell 文件整理如下:

#!/bin/bash
echo "build start"

JAR_PATH=libs
BIN_PATH=bin
SRC_PATH=src

# java文件列表目录
SRC_FILE_LIST_PATH=src/sources.list

#生所有的java文件列表
rm -f $SRC_PATH/sources
find $SRC_PATH/ -name *.java > $SRC_FILE_LIST_PATH

#删除旧的编译文件 生成bin目录
rm -rf $BIN_PATH/
mkdir $BIN_PATH/

#生成依赖jar包 列表
for file in  ${JAR_PATH}/*.jar;
do
jarfile=${jarfile}:${file}
done
echo "jarfile = "$jarfile

#编译
javac -d $BIN_PATH/ -cp $jarfile @$SRC_FILE_LIST_PATH

#运行
java -cp $BIN_PATH$jarfile com.zuiapps.danmaku.server.Main

有一点需要注意的是, javac -d $BIN_PATH/ -cp jarfile @jarfile @jarfile @SRC_FILE_LIST_PATH
在要编译的文件很多时候,一个个敲命令会显得很长,也不方便修改,
可以把要编译的源文件列在文件中,在文件名前加@,这样就可以对多个文件进行编译,
以上就是吧java文件放到 $SRC_FILE_LIST_PATH 中去了
文件内容如下:

总结:
编译 :

  1. 需要编译所有的java文件
  2. 依赖的java 包都需要加入到 classpath 中去
  3. 最后设置 编译后的 class 文件存放目录 即 -d bin/
  4. java文件过多是可以使用 @$SRC_FILE_LIST_PATH 把他们放到一个文件中去
    运行:
    1.需要把 编译时设置的bin目录和 所有jar包加入到 classpath 中去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/436725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux第68步_旧字符设备驱动的一般模板

file_operations结构体中的函数就是我们要实现的具体操作函数。 注意: register_chrdev()和 unregister_chrdev()这两个函数是老版本驱动使用的。现在新字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。 1、创建C…

zerotier局域网组建 笔记

背景 家里的windows电脑:home-win10-pc 家里的windows电脑上vmware运行的ubuntu虚拟机:home-ubuntu-vm 公司的mac电脑:company-mac-pc 由于xxx需求,需要组建一个局域网,前东家都是用的zerotier,出于路径依…

代码学习记录10

随想录日记part10 t i m e : time: time: 2024.03.03 主要内容:今天的主要内容是深入了解数据结构中栈和队列,并通过三个 l e e t c o d e leetcode leetcode 题目深化认识。 20. 有效的括号1047. 删除字符串中的所有…

FL Studio怎么分轨导出音频文件 FL Studio轨道怎么合并 音乐编曲软件推荐 FL Studio下载

对于现在的编曲人来说,熟练掌握各类编曲软件已经是硬性要求了。掌握编曲软件的使用方法需要我们付出一些学习时间,例如编曲软件中各个轨道的拆分与合并等等,这些都是非常实用的编曲软件使用技巧。今天我就以FL Studio举例,向大家展…

轻薄蓝牙工牌室内人员定位应用

在现代化企业管理的背景下,轻薄蓝牙工牌人员定位应用逐渐崭露头角,成为提升企业效率和安全性的重要工具。本文将从轻薄蓝牙工牌的定义、特点、应用场景以及未来发展趋势等方面,对其进行全面深入的探讨。 一、轻薄蓝牙工牌的定义与特点 轻薄…

今日arXiv最热大模型论文:哈工深新研究发现!无需额外资源,SelectIT方法助力大语言模型精准调优

在当今的人工智能领域,大语言模型(LLMs)已经成为了研究的热点,它们在理解指令和解决复杂问题方面展现出了令人印象深刻的能力。然而,要想进一步提升这些模型的性能,指令调优(Instruction Tuning…

Material UI 5 学习01-按钮组件

Material UI 5 学习01-按钮组件 一、安装Material UI二、 组件1、Button组件1、基础按钮2、variant属性3、禁用按钮4、可跳转的按钮5、disableElevation属性6、按钮的点击事件onClick 2、Button按钮的颜色和尺寸1、Button按钮的颜色2、按钮自定义颜色3、Button按钮的尺寸 3、图…

量化交易日记 基础概念篇

联系方式 17710158550 NBEATS (Neural Basis Expansion Analysis for Time Series)、NHiTS (Neural Hierarchical Interpolation for Time Series Forecasting)、LSTNet (Long Short-Term Memory Network)、TCN (Temporal Convolutional Network)、Transformer、DeepAR (DeepAR…

TikTok(字节跳动)的新人工智能Boximator

AI 视频生成器最近占据了科技头条新闻,特别是在 OpenAI 宣布推出Sora之后,Sora 是他们的第一个视频模型,可以通过简单的文本提示生成令人惊叹的 AI 视频。 如今,制作 TikTok 的公司字节跳动也加入了这一行动。他们创建了Boximato…

FPGA AXI4总线操作教程

AXI(Advanced Extensible Interface)总线是一种高性能、低延迟的片上系统(SoC)接口标准,广泛应用于现代数字系统设计中。它允许不同的硬件组件以高效、可靠的方式进行数据传输和控制。本教程将介绍AXI总线的基本操作和…

卧室装修干货|榻榻米的4种类型及优缺点。福州中宅装饰,福州装修

卧室想要做榻榻米设计,不知道如何下手,这篇文章一定要看:常见榻榻米的类型有哪些?这些类型分别有哪些优缺点呢? 榻榻米是一种传统的日本床铺设计,近年来在现代室内设计中越来越受欢迎。它以低矮的床垫和简洁的线条为…

004-执行上下文事件循环

执行上下文&事件循环 1、执行上下文2、执行上下文类型3、执行上下文的生命周期4、示例说明5、事件循环机制6、宏任务7、微任务8、同步任务、宏任务、微任务9、代码执行顺序 - 示例 💡 Tips:用于说明 浏览器 对 JavaScript 执行顺序,涉及知…

Unity UGUI之Scrollbar基本了解

Unity的Scrollbar组件是用于在UI中创建滚动条的组件之一。滚动条通常与其他可滚动的UI元素(如滚动视图或列表)一起使用,以便用户可以在内容超出可见区域时滚动内容。 以下是Scrollbar的基本信息和用法: 1、创建 在Unity的Hierarchy视图中右…

Debian篇——系统安装在SD卡上如何调整系统分区大小

背景:我的SD卡是128G的,开发商安装好系统后,我发现SD的系统分区才8.9G空间(剩下的108G未分区),不够使用,于是需要调整系统分区的大小。 1.查看系统盘挂载情况 df -h 2.查看系统盘在哪个分区 …

解决java: 无法访问javax.servlet.ServletException

问题 在对历往项目工具类总结和归纳更新过程中,common模块在compile编译过程中遇到了“Error java: 无法访问javax.servlet.ServletException 找不到javax.servlet.ServletException的类文件”这个报错问题。 IDE使用的是idea2021。 解决方法 pom中增加如下依赖&…

十七、IO流

IO 目录 一、IO流的概述IO流的分类 二、基本流2.1字节流2.2 字节输出流写出数据的三种方式2.3 换行和续写2.4 字节输入流2.5 文件拷贝2.6 IO流中不同JDK版本捕获异常的方式2.7 字符集详解2.7.1 ASCII字符集2.7.2 GBK字符集2.7.3 Unicode字符集 2.8 为什么会有乱码2.9 Java中的编…

python之海龟绘图

海龟绘图(turtle)是一个Python内置的绘图库,也被称为“Turtle Graphics”或简称“Turtles”。它采用了一种有趣的绘图方式,模拟一只小海龟在屏幕上爬行,而小海龟爬行的路径就形成了绘制的图形。这种绘图方式最初源自20…

某资产管理系统打点过程中的免杀经历

上周,被扔过来单位内部的一个链接,让渗透一下,本以为三下五除二很快就能测完,没想到在对抗杀软时费了一番功夫,再加上杂七杂八的事儿,经过了一个星期才测完(# ̄~&#xff…

API(接口) | 软件组件之间信息交互的“桥梁”

Hi,大家好,我是半亩花海。本文主要从 API 的定义、包含、用途和其他方面来简单地介绍 API(接口) ——软件组件之间信息交互的“桥梁”。 目录 一、什么是 API? 二、 API 中所包含哪些? 补充 三、API 可…

SQL server内存问题排查方案

前言 由于昨晚线上服务器数据库突然访问数据缓慢,任务管理里面SQL server进程爆满等等,重大事故的排查拟写解决方案。 整体思路 查询数据库请求连接:排查连接池是否占满查询数据库请求量:排查数据是否存在反复查询查询数据库阻…