Window系统下使用CMD命令调用jar包中有main()方法的java类

Windows CMD 调用 Java 类
本文介绍如何在Windows环境下使用CMD命令行工具调用包含main方法的Java类,并正确传递参数。通过简单的两步操作,即可实现对特定jar包内指定类的调用。
部署运行你感兴趣的模型镜像

Window系统下使用CMD命令调用jar包中有main()方法的java类,并传入参数

 

使用情景:

前几天网站需要添加一个功能,数据处理在一个单独的可调用的java类main方法中,

由此涉及到了 Windows使用CMD命令的方法调用jar包中的class,并传入参数。

 

步骤:

1. cd 到 jar包所在目录

2. 使用下面的命令

java -cp xxx.jar classPackagePath.YourClass param1,param2...paramn
//如:
java -cp testCMD-1.0.jar com.test.TestCMD a,b,c,d,e

 

上面就是所有的步骤,是不是很简单

 

PS:

如果有人跟你说传入的参数用空格分开,而不是用“,”

别犹豫,直接走人或给他一个中指

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>我们被要求提供一个在Windows系统下查找Java进程的命令。 在Windows中,常用的命令有: 1. 使用任务管理器(图形界面)可以查看,但命令行更高效。 2. 使用`tasklist`命令,可以配合过滤。 3. 使用`jps`(Java Virtual Machine Process Status Tool)命令,这是JDK自带的工具。 但是注意:`jps`命令需要JDK的bin目录在环境变量PATH中。 因此,我们提供两种方法方法一:使用`jps`命令(推荐,因为可以显示主名) 打开命令提示符(cmd)并输入: jps -l 这个命令会列出所有Java进程的PID(进程ID)和完整的主名。 方法二:使用`tasklist`命令(当没有JDK环境时) tasklist /FI "IMAGENAME eq java.exe" 这个命令会列出所有名为java.exe的进程,并显示进程ID、会话名、会话#、内存使用等信息。 但是,有时候Java进程可能是javaw.exe(例如,一些GUI应用),所以也可以同时查找javaw.exe: tasklist /FI "IMAGENAME eq java.exe" /FI "IMAGENAME eq javaw.exe" 不过,`tasklist`的多个过滤条件默认是“或”的关系?实际上,`tasklist`的多个/FI是“与”的关系,所以上面这样写是错误的。正确的做法是分别查询,或者使用通配符: tasklist /FI "IMAGENAME eq java.exe" tasklist /FI "IMAGENAME eq javaw.exe" 或者使用通配符(注意:tasklist不支持通配符在中间,所以不能使用`java*.exe`,但可以分别查询) 另外,也可以使用`wmic`命令: wmic process where "name='java.exe' or name='javaw.exe'" get processid,commandline 这个命令可以显示进程ID和命令行,可以更清楚地看到启动参数。 因此,我们总结如下: 1. 如果安装了JDK且配置了环境变量,使用: jps -l 2. 如果没有JDK环境,使用: tasklist | findstr "java javaw" 或者更精确的: tasklist /FI "IMAGENAME eq java.exe" tasklist /FI "IMAGENAME eq javaw.exe" 3. 如果需要详细信息(如命令参数),使用: wmic process where "name='java.exe' or name='javaw.exe'" get processid,commandline 但是,由于问题要求的是“查找Java进程”的命令,我们给出最常用的两种。 注意:在PowerShell中,命令略有不同,但问题要求的是Windows命令,通常指cmd命令。 因此,我们回答: 在Windows中查找Java进程的命令: 1. 使用JDK自带的jps命令:`jps -l` 2. 使用系统自带的tasklist命令:`tasklist /FI "IMAGENAME eq java.exe"` 和 `tasklist /FI "IMAGENAME eq javaw.exe"` 解释: - `jps -l`:显示所有Java进程的PID和主的完整名。 - `tasklist`命令:通过筛选映像名称为java.exe或javaw.exe的进程来查找Java进程。 另外,如果使用PowerShell,可以使用: Get-Process java, javaw 但题目要求的是命令,所以我们给出cmd下的命令。 代码示例(如果需要用Java代码执行这些命令): 虽然问题没有要求代码,但我们可以给出在Java程序中执行这些命令的代码片段。 但是注意:问题要求提供的代码只能是Java代码。所以我们可以给出一个在Java程序中执行系统命令来查找Java进程的示例。 但是,在Java中,我们也可以使用`ManagementFactory`来获取当前JVM的进程ID,或者使用`ProcessHandle`(Java 9+)来获取进程信息,但无法直接获取所有Java进程。 因此,如果需要在Java程序中获取所有Java进程,可以调用操作系统命令并解析输出。 示例代码(使用jps命令):</think>### Windows 下查找 Java 进程的完整命令指南 #### 核心命令解析 在 Windows 系统中,查找 Java 进程主要通过以下命令实现: 1. **使用 `jps` 命令(JDK 自带工具)** 这是最直接的方法,但需要 JDK 的 bin 目录在系统 PATH 中: ```cmd jps -l -v ``` - `-l`:显示完整主名 - `-v`:显示 JVM 参数 - 输出示例: ``` 1234 com.example.MainApp -Xmx512m 5678 org.apache.catalina.startup.Bootstrap ``` 2. **使用 `tasklist` 命令系统自带)** 当没有 JDK 环境时: ```cmd tasklist /FI "IMAGENAME eq java.exe" /FI "IMAGENAME eq javaw.exe" /FO TABLE ``` - 同时查找 `java.exe` 和 `javaw.exe`(GUI 程序) - 输出含 PID、内存占用等信息 3. **使用 `wmic` 命令(获取详细信息)** ```cmd wmic process where "name='java.exe' or name='javaw.exe'" get processid,commandline,executablepath ``` - 可获取完整的命令参数 - 输出示例: ``` CommandLine ExecutablePath ProcessId "C:\jdk\bin\java.exe" -jar app.jar C:\jdk\bin\java.exe 1234 ``` #### 完整操作流程 ```cmd :: 步骤1:检查Java环境 where java :: 步骤2:使用jps(推荐) jps -l -m -v :: 步骤3:备选方案(无JDK时) tasklist /V | findstr /i "java javaw" :: 步骤4:获取进程详细信息 wmic process where "name like '%java%'" get processid,commandline /value ``` #### Java 进程检测代码 如果需要通过 Java 程序实现进程检测: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class JavaProcessFinder { public static void main(String[] args) { List<ProcessInfo> javaProcesses = findJavaProcesses(); javaProcesses.forEach(System.out::println); } public static List<ProcessInfo> findJavaProcesses() { List<ProcessInfo> processes = new ArrayList<>(); try { Process process = Runtime.getRuntime().exec("wmic process where \"name='java.exe' or name='javaw.exe'\" get processid,commandline /format:csv"); try (BufferedReader reader = new BufferedReader( new InputStreamReader(process.getInputStream()))) { String line; boolean firstLine = true; while ((line = reader.readLine()) != null) { if (firstLine || line.trim().isEmpty()) { firstLine = false; continue; } String[] parts = line.split(","); if (parts.length >= 3) { processes.add(new ProcessInfo( parts[1].trim(), // PID parts[2].trim() // CommandLine )); } } } } catch (IOException e) { e.printStackTrace(); } return processes; } static class ProcessInfo { private final String pid; private final String commandLine; public ProcessInfo(String pid, String commandLine) { this.pid = pid; this.commandLine = commandLine; } @Override public String toString() { return "PID: " + pid + " | Command: " + commandLine; } } } ``` #### 常见问题解决 | 问题现象 | 解决方案 | |---------|---------| | `'jps' 不是内部命令` | 将 JDK bin 目录加入 PATH:`set PATH=%PATH%;C:\jdk\bin` | | 查不到 javaw 进程 | 使用 `tasklist /FI "IMAGENAME eq javaw.exe"` | | 需要终止进程 | `taskkill /PID 1234 /F` | | 权限不足 | 以管理员身份运行 CMD | #### 进程属性说明 | 字段 | 说明 | |------|------| | PID | 进程 ID (唯一标识) | | IMAGENAME | 可执行文件名 (java.exe/javaw.exe) | | CommandLine | 启动命令参数 | | Session# | 会话标识 (0 表示系统服务) | | Mem Usage | 内存占用 | ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值