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

命令行运行Java程序时fazecast/jSerialComm/SerialPort异常排查

解决方案

你的问题核心是Maven默认生成的Jar包只包含项目自身代码,不会打包依赖的第三方库,而IDE会自动把依赖库加入运行时Classpath,所以IDE内运行正常,单独Jar包运行时找不到jSerialComm的类。下面提供两种可行的解决方法:

方法一:构建包含所有依赖的Fat Jar(推荐)

使用maven-shade-plugin将项目代码和所有依赖库打包到同一个Jar文件中,这样可以直接通过java -jar命令运行,无需额外处理依赖。

修改你的pom.xml,在<build><plugins>中添加以下插件配置:

<!-- Maven Shade Plugin 用于构建Fat Jar -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>alk.okc.particlecountalarm.ParticleCountAlarm</mainClass>
                    </transformer>
                </transformers>
                <!-- 可选:避免依赖冲突,保留jSerialComm的原生库 -->
                <filters>
                    <filter>
                        <artifact>com.fazecast:jSerialComm</artifact>
                        <includes>
                            <include>**/*</include>
                        </includes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

配置完成后,执行mvn clean package,target目录下会生成两个Jar文件:

  • ParticleCountAlarm-1.0.jar:原轻量Jar(仅项目代码)
  • ParticleCountAlarm-1.0-shaded.jar:包含所有依赖的Fat Jar,直接运行这个文件即可:
java -jar ParticleCountAlarm-1.0-shaded.jar

方法二:复制依赖库并指定Classpath运行

如果不想打包成Fat Jar,可以用maven-dependency-plugin自动复制所有依赖到指定目录,运行时手动指定Classpath。

在<build><plugins>中添加以下插件配置:

<!-- 复制依赖到target/lib目录 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.6.1</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
        </execution>
    </executions>
</plugin>

执行mvn clean package后,target/lib目录会包含所有依赖库(包括jSerialComm)。然后用以下命令运行:

java -cp "ParticleCountAlarm-1.0.jar:lib/*" alk.okc.particlecountalarm.ParticleCountAlarm

注意:Linux/macOS下用:分隔Classpath,Windows下用;。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:03:25