使用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 中去

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pygame教程07:键盘常量+键盘事件的2种捕捉方式

------------★Pygame系列教程★------------ Pygame教程01:初识pygame游戏模块 Pygame教程02:图片的加载缩放旋转显示操作 Pygame教程03:文本显示字体加载transform方法 Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧…

理论学习 BatchNorm2d

import torch import torch.nn as nn# With Learnable Parameters m nn.BatchNorm2d(100) # Without Learnable Parameters m nn.BatchNorm2d(100, affineFalse) input torch.randn(20, 100, 35, 45) output m(input)print(output) print(output.shape)这段代码展示了如何使…

2024蓝桥杯每日一题(二分)

一、第一题:教室 解题思路:二分差分 对天数进行二分,在ck函数中用差分方法优化多次区间累加。 【Python程序代码】 n,m map(int,input().split()) a [0] list(map(int,input().split())) d,s,t [0]*(m5),[0]*(m5),[0]*(m5) for…

你还可以通过“nrm”工具,来自由管理“npm”的镜像

你还可以通过“nrm”工具,来自由管理“npm”的镜像 nrm(npm registry manager)是npm的镜像管理工具,有时候国外的资源太慢,使用这个就可以快速地在npm源间切换。 1.安装nrm 在命令行执行命令,npm install…

Docker容器化技术(数据卷的管理)

数据卷 是一个可供容器使用的特殊目录,它将主机操作系统目录直接 映射进容器,类似于 Linux 中的 mount 行为 。 数据卷:可以提供很多有用的特性 数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便;对数…

使用huggingface实现AltCLIP进行对齐语言和图像

目录 引言 使用例子 AltCLIPConfig 参数 示例 AltCLIPTextConfig 参数详解 示例 AltCLIPVisionConfig 参数详解 示例 AltCLIPProcessor 参数 方法 示例使用 AltCLIPModel 前向传播方法 forward 返回值 示例使用 AltCLIPTextModel 方法 forward 返回值 示…

如何选择合适的IP代理,如何为网络爬虫设置代理

目录 前言 1. 代理类型的选择 2. 代理速度 3. 代理稳定性 4. 代理的匿名性 5. 代理的地理位置 总结 前言 在进行网络爬虫任务时,为了避免被目标网站封禁IP或限制访问频率,我们通常会使用代理来隐藏真实的IP地址。选择合适的IP代理对于爬虫的成功…

内部应用解耦神器-Spring事件

大家好,我是程序员牛牛,《AI超级个体: ChatGPT与AIGC实战指南》的参与人,10年Java编程程序员。 1. 概述 在做业务开发过程中,有些复杂点的逻辑,可能代码逻辑会很冗长,举一个很简单的例子,如&am…

【vue.js】文档解读【day 3】 | 条件渲染

如果阅读有疑问的话,欢迎评论或私信!! 文章目录 条件渲染前言:v-ifv-elsev-else-iftemplate中的v-ifv-showv-if vs v-show 条件渲染 前言: 在JavaScript中,我们知道条件控制语句可以控制程序的走向&#…

Failed to fetch dynamically imported module错误解决方案

工作需要,需要搬移某个功能代码到去年的分支,结果报了这个错 花了2个多小时排查,最后发现,是某个ts文件没有搬过来 吐血,怎么不直接提示这个文件不存在呢,让我研究了半天

【JAVA】HashMap扩容性能影响及优化策略

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在软件开发中,HashMap是一种常用的数据结构,但在处理大量数据时,其扩容…

基于支持向量机的的二分类预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于支持向量机的的二分类预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88947565 SVM应用实例, 基于…

SpringBoot配置达梦数据库依赖(达梦8)

maven配置 <!-- 达梦数据库 --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version></dependency><dependency><groupId>com.alibaba&l…

【力扣 - 最大子数组和】

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…

蓝桥杯C++大学B组一个月冲刺记录2024/3/12

蓝桥杯C大学B组一个月冲刺记录2024/3/12 规则&#xff1a;每日三题 时间过得好快… 1.挤牛奶 每天早上 5点&#xff0c;三名农夫去牛场给奶牛们挤奶。 现在从 5点开始按秒计时&#xff0c;第一名农夫在第 300秒开始给牛挤奶&#xff0c;并在第 100 秒停止挤奶。 第二名农夫在第…

自动化测试过程中的手机验证码处理!

手机验证码登录很普遍了&#xff0c;那么在自动化测试的时候需要登录&#xff0c;登录不了就意味着很多自动化就没法执行下去了。 到底该怎么处理呢&#xff1f;其实并不难&#xff0c;我们先看下验证码的业务逻辑&#xff0c;在我们“点击获取验证码”按钮的时候&#xff0c;…

一学就懂:安装OLED透明屏拼接屏需要注意什么?

安装OLED透明屏拼接屏时&#xff0c;需要注意以下几个方面&#xff1a; 一、前期准备 测量和规划&#xff1a;对安装区域进行详细测量&#xff0c;确保安装区域的尺寸和结构符合OLED透明屏的要求。同时&#xff0c;规划好拼接屏的数量、位置以及布线和固定方案。 环境评估&am…

Weblogic 常规渗透测试环境

测试环境 本环境模拟了一个真实的weblogic环境&#xff0c;其后台存在一个弱口令&#xff0c;并且前台存在任意文件读取漏洞。分别通过这两种漏洞&#xff0c;模拟对weblogic场景的渗透。 Weblogic版本&#xff1a;10.3.6(11g) Java版本&#xff1a;1.6 弱口令 环境启动后…

(golang)切片何时会创建新切片或影响原切片

什么时候切片操作会影响原切片 // 1.切片后没有触发slice的扩容机制时 什么时候对切片操作会创建新切片不影响原切片 // 2.对切片头元素进行截取的时候 // 3.当使用append时&#xff0c;len > cap则会触发扩容机制 前置&#xff1a; //slice结构体 type SliceHeader struct…

指针篇章-(4)+qsort函数的模拟

学习目录 ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————…