如何从Java运行SparkJava?Maven打包SparkJava应用依赖加载失败求助
一、Java中运行SparkJava的基本步骤
- 添加SparkJava依赖到
pom.xml:<dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core</artifactId> <version>2.9.4</version> <!-- 选用兼容Java 21的稳定版本 --> </dependency> - 编写基础SparkJava应用代码:
import static spark.Spark.*; public class SparkApp { public static void main(String[] args) { port(4567); // 指定服务端口 get("/hello", (req, res) -> "Hello SparkJava!"); } } - 运行方式:
- 直接在IDE中运行
SparkApp类的main方法,启动后访问http://localhost:4567/hello即可查看结果 - 打包完成后通过命令行执行Jar文件启动(需先解决依赖打包问题)
- 直接在IDE中运行
二、Maven打包SparkJava应用依赖加载问题的解决思路
你遇到的依赖无法加载问题,核心原因是默认的maven-jar-plugin仅打包项目自身代码,不会包含外部依赖库。以下是具体解决方法:
1. 使用maven-shade-plugin打包成Fat Jar(推荐方案)
该插件会将所有依赖合并到一个可执行Jar中,彻底解决运行时依赖缺失问题。在pom.xml的build/plugins节点下添加如下配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 替换为你的主类全限定名 --> <mainClass>com.yourpackage.SparkApp</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
执行mvn clean package后,target目录下会生成包含所有依赖的Jar包,运行命令:java -jar your-app-name-1.0-SNAPSHOT.jar即可启动应用。
2. 验证Java版本兼容性
你使用的是Java 21,需确保SparkJava版本支持该版本。建议选用spark-core 2.9.4及以上版本,旧版本可能不兼容Java 17+环境。
3. 检查依赖范围设置
查看pom.xml中SparkJava依赖的scope属性,如果设置为provided,Maven打包时会排除该依赖,导致运行时找不到。确保依赖使用默认的compile范围(无需显式指定):
<dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core</artifactId> <version>2.9.4</version> <!-- 不要设置scope为provided --> </dependency>
4. 清理Maven缓存
若依赖下载不完整或缓存损坏,执行以下命令强制更新依赖并重新打包:
mvn clean install -U
内容的提问来源于stack exchange,提问作者Johann
相关产品推荐
相关产品推荐

