You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mvn clean package构建IBM MQ项目后找不到指定主类

解决IBM MQ项目Maven构建空JAR及ClassNotFoundException问题

问题根源

  • mvn clean package输出[WARNING] JAR will be empty - no content was marked for inclusion!:Maven未将项目编译后的class文件打包进JAR包
  • 运行时ClassNotFoundException:空JAR中不存在com.ibm.mq.badge.Manager类,导致JVM无法加载

解决方案

1. 核对Maven目录规范

确保源码放在Maven默认路径src/main/java下,目录结构必须匹配包名:

src/
└── main/
    └── java/
        └── com/
            └── ibm/
                └── mq/
                    └── badge/
                        └── Manager.java

如果源码放在非默认目录,Maven不会自动编译打包,直接生成空JAR。

2. 修正POM.xml配置

添加必要的编译和打包插件,确保class文件被正确打包,可选指定主类简化运行命令:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.ibm.mq.badge</groupId>
    <artifactId>TicketGenerator</artifactId>
    <version>1.4</version>
    <packaging>jar</packaging>

    <!-- IBM MQ客户端依赖 -->
    <dependencies>
        <dependency>
            <groupId>com.ibm.mq</groupId>
            <artifactId>com.ibm.mq.allclient</artifactId>
            <version>9.3.3.0</version> <!-- 按项目要求调整版本 -->
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 指定Java编译版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>1.8</source> <!-- 匹配项目使用的Java版本 -->
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 打包插件:确保包含class文件,指定主类 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.ibm.mq.badge.Manager</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3. 重新执行构建

清理旧产物后重新编译打包:

mvn clean compile package

构建完成后检查target/TicketGenerator-1.4.jar,需确保内部包含com/ibm/mq/badge/Manager.class文件。

4. 正确运行程序

  • 若POM已指定主类,直接执行:
java -jar target/TicketGenerator-1.4.jar
  • 未指定主类时,需手动指定类路径(包含JAR和IBM MQ依赖),Windows命令示例:
java -cp target\TicketGenerator-1.4.jar;%USERPROFILE%\.m2\repository\com\ibm\mq\com.ibm.mq.allclient\9.3.3.0\com.ibm.mq.allclient-9.3.3.0.jar com.ibm.mq.badge.Manager

(替换依赖版本为实际使用的版本)

验证步骤

  1. 执行mvn clean compile,确认target/classes/com/ibm/mq/badge/Manager.class存在
  2. 执行mvn package,确认target/TicketGenerator-1.4.jar大小正常(非几KB空文件)
  3. 运行程序,确认无ClassNotFoundException报错

内容的提问来源于stack exchange,提问作者Jo Jo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:03:18