在生成的 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 时, 所有 可能需要的元素 运行 宁它 必须 出现在类路径中。