在生成的 jar 中找不到 log4j class
log4j class not found in generated jar
我用 maven-assembly-plugin
插件生成 jar 文件。我使用 java -jar
来执行 jar。我收到错误消息:
log4j: WARN JmDNS or serviceInfo not found
我试图在 -classpath
中使用 jar 的路径,但得到了同样的错误。
插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>test.LeanFTest</mainClass>
</manifest>
</archive>
<finalName>${project.artifactId}-fatjar-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/leanft-assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
这很可能归结为:
- 您的 Maven 构建 不会 将依赖的工件包含到您的 JAR 文件中。换句话说:您创建的 JAR 不 包含 logj4 JAR。您可以使用 Maven 配置更改它,请参阅 here 了解详细信息。
- 由于您的 JAR 不包含依赖项,因此您依赖的所有 JAR 必须 位于您的类路径中。意思是:当你在命令行上 运行 你的新 JAR 时, 所有 可能需要的元素 运行 宁它 必须 出现在类路径中。
我用 maven-assembly-plugin
插件生成 jar 文件。我使用 java -jar
来执行 jar。我收到错误消息:
log4j: WARN JmDNS or serviceInfo not found
我试图在 -classpath
中使用 jar 的路径,但得到了同样的错误。
插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>test.LeanFTest</mainClass>
</manifest>
</archive>
<finalName>${project.artifactId}-fatjar-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/leanft-assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
这很可能归结为:
- 您的 Maven 构建 不会 将依赖的工件包含到您的 JAR 文件中。换句话说:您创建的 JAR 不 包含 logj4 JAR。您可以使用 Maven 配置更改它,请参阅 here 了解详细信息。
- 由于您的 JAR 不包含依赖项,因此您依赖的所有 JAR 必须 位于您的类路径中。意思是:当你在命令行上 运行 你的新 JAR 时, 所有 可能需要的元素 运行 宁它 必须 出现在类路径中。