使用maven-shade-plugin生成uber-jar报错:Cannot load implementation hint
解决maven-shade-plugin生成Uber-Jar时的配置错误
你的错误根源很明确:maven-shade-plugin的transformer配置里,implementation属性填错了。这个属性需要指定插件内置的转换器类,而不是你的主类org.example.Main。用来设置可执行Jar入口类的转换器是org.apache.maven.plugins.shade.resource.MainClassResourceTransformer。
另外还有个小问题:maven-compiler-plugin被你放在了<dependencies>依赖块里,这是错误的——它是构建插件,应该移到<build><plugins>节点下。
修正后的关键配置片段
<build> <plugins> <!-- 修正maven-compiler-plugin的位置 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>19</source> <target>19</target> </configuration> </plugin> <!-- 修正maven-shade-plugin的transformer配置 --> <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.MainClassResourceTransformer"> <mainClass>org.example.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
完整修正后的pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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>org.example</groupId> <artifactId>SharkTouch</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>19</maven.compiler.source> <maven.compiler.target>19</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.7.1</version> </dependency> <dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.3.1</version> </dependency> <dependency> <groupId>org.reactfx</groupId> <artifactId>reactfx</artifactId> <version>1.4.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.10.1</version> <configuration> <source>19</source> <target>19</target> </configuration> </plugin> <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.MainClassResourceTransformer"> <mainClass>org.example.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
修正后执行mvn clean package,就能生成包含所有依赖的可执行Uber-Jar了。
内容的提问来源于stack exchange,提问作者Fernando Afonso
相关产品推荐
相关产品推荐

