如何在包含多个类的Java项目中将单个类打包为jar文件
单独打包Java单个类为jar文件的操作方法
场景1:使用原生JDK命令行操作
- 首先确保目标类已经完成编译,生成了对应的
.class文件,注意如果类有包名,需要保留包路径对应的目录结构,比如类的全限定名是com.example.DemoUtil,那编译后的class文件路径应该是com/example/DemoUtil.class - 执行jar打包命令:
jar cvf target-jar-name.jar path/to/YourClass.class
- 参数说明:
c:创建新的jar包v:输出打包详情日志,可选f:指定输出的jar包文件名
- 如果需要让这个jar可以直接运行,需要指定主类,在打包时添加
e参数:
jar cvfe executable-demo.jar com.example.YourMainClass com/example/YourMainClass.class
场景2:Maven项目下操作
- 首先修改pom.xml,添加maven-jar-plugin配置,指定要打包的类和排除其他类:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <!-- 仅包含指定的类,支持通配符 --> <includes> <include>com/example/YourTargetClass.class</include> </includes> <!-- 如果需要指定主类可运行,添加下面的配置 --> <archive> <manifest> <mainClass>com.example.YourTargetClass</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
- 执行打包命令:
mvn package
- 打包完成后即可在target目录下找到仅包含目标类的jar包
场景3:Gradle项目下操作
- 修改build.gradle配置,自定义jar任务的包含规则:
jar { // 仅包含指定的类 include 'com/example/YourTargetClass.class' // 可选:指定主类 manifest { attributes 'Main-Class': 'com.example.YourTargetClass' } }
- 执行打包命令:
gradle jar
- 生成的jar包在build/libs目录下
注意事项
- 如果目标类依赖了项目内的其他类或者第三方依赖,单独打包后运行时需要将对应的依赖也加入类路径,否则会报类找不到错误
- 保留包目录结构是关键,如果打包时丢失了包路径,会导致类加载时无法正常找到对应类
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

