Java静态工具类JAR不可直接执行,需通过其他Java程序调用、封装为含main的可执行JAR、或用jshell测试;前提是类与方法均为public,包路径正确,且JAR已加入classpath。

Java 中的 static 静态工具类打包成 JAR 后,不能像命令行程序那样“直接调用”,它本身没有 main 方法,也不具备可执行入口。但你可以通过几种方式在外部使用它——关键在于“谁来调用”以及“如何让 JVM 找到并加载它”。
确保工具类是 public 且方法是 public static
静态工具类要被外部使用,必须满足基本可见性要求:
- 类声明为 public(否则其他 JAR 或项目无法访问)
- 工具方法声明为 public static(如
public static String formatTime(long ts)) - 类文件放在正确的包路径下(例如
com.example.util.DateUtils,对应目录结构com/example/util/DateUtils.class)
把 JAR 加入 classpath 后,在其他 Java 程序中调用
这是最常用、最标准的方式:将你的工具 JAR 当作依赖库,在另一个 Java 项目中 import 并调用。
- 编译时:用
javac -cp your-utils.jar YourApp.java - 运行时:用
java -cp ".;your-utils.jar" YourApp(Windows)或java -cp ".:your-utils.jar" YourApp(macOS/Linux) - 代码中直接调用:
String s = com.example.util.DateUtils.formatTime(System.currentTimeMillis());
做成可执行 JAR(含 main 方法)来“间接调用”工具逻辑
如果你希望双击或命令行一键运行某个工具功能(比如格式化时间、解析 JSON),可以写一个简单的 main 类封装调用:
立即学习“Java免费学习笔记(深入)”;
- 新建一个
com.example.cli.Main类,里面写public static void main(String[] args) - main 方法里调用你的静态工具方法,例如
System.out.println(DateUtils.formatTime(Long.parseLong(args[0]))); - 打包时在
META-INF/MANIFEST.MF中指定Main-Class: com.example.cli.Main - 之后就能直接运行:
java -jar your-utils-cli.jar 1717023456000
用 Java 11+ 的 jshell 快速测试(适合开发调试)
无需编译新类,快速验证工具方法是否可用:
- 启动 jshell:
jshell --class-path your-utils.jar - 导入类:
import com.example.util.DateUtils; - 直接调用:
DateUtils.formatTime(System.currentTimeMillis())
不复杂但容易忽略的是类路径和包结构的一致性——JAR 里路径错一级,或者忘了加 public,都会导致 NoClassDefFoundError 或 IllegalAccessException。


















