【问题标题】:log4j class not found in generated jar在生成的 jar 中找不到 log4j 类
【发布时间】:2018-12-10 08:38:51
【问题描述】:

我使用 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>

【问题讨论】:

  • @GhostCat :我错过了插件配置,我编辑了问题。
  • @GhostCat :我使用命令行。
  • @GhostCat :我仍然面临这个 jar 文件的问题,但这不是根本原因。

标签: java jar log4j classpath


【解决方案1】:

这很可能归结为:

  • 您的 maven 构建确实将相关工件包含到您的 JAR 文件中。换句话说:您创建的 JAR包含 logj4 JAR。您可以使用 maven 配置进行更改,详情请参阅 here
  • 由于您的 JAR 不包含依赖项,因此您所依赖的所有 JAR必须在您的类路径中。含义:当您在命令行上运行新 JAR 时,运行它可能需要的所有元素必须出现在类路径中。

【讨论】:

  • 这个 jar 文件中包含依赖项,但我已经尝试在类路径中使用 log4j jar 文件的路径。
  • 当您显示的 maven 配置没有写入包含它们时,如何包含它们?
  • 我使用两个插件来生成jar。另一个是maven-jar-plugin。我生成了两个 jar,分别为 60 KB 和 16 MB,但是所有的 jar 都被复制到了 lib 命名的文件夹中。
猜你喜欢
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 2022-01-16
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多