【问题标题】:Classpath for Maven project in Eclipse - src vs src/main/javaEclipse 中 Maven 项目的类路径 - src vs src/main/java
【发布时间】:2016-09-18 15:33:32
【问题描述】:

我正在尝试将commons-logging.properties 添加到commons-logging.1.1.3.jar 拾取的类路径中,默认情况下使用JDK14Logger,然后打印DEBUG 日志。

当我在 /src 文件夹(一个普通的 Java 项目)下添加这个时,它在 Run As -> Java Application 时被拾取。

但是,对于一个 Maven 项目,我尝试将这个文件放在项目根目录下的不同位置“src/main/java”、“src/main/resources”。 Run As -> Java Application 时没有考虑。

仅当通过如下 VM 参数明确指定时,才会获取日志配置文件:

-Djava.util.logging.config.file=C:\ws-learning\spring-tutorial-5\commons-logging.properties

什么是 Maven 项目的类路径?

我应该把要提取的配置文件放在哪里?

为什么 src/ 和 src/main/java 在类路径方面表现不同?

更新:

只打印“INFO”级别的消息。我没有看到“FINE”级别的消息

handlers=java.util.logging.ConsoleHandler,java.util.logging.FileHandler
.level=SEVERE
org.springframework.level=FINE

java.util.logging.ConsoleHandler.level=ALL

java.util.logging.FileHandler.level=FINE

java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

更新 2:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

【问题讨论】:

  • "src/main/resources" 是在不太了解公共日志记录的情况下应该工作的路径。
  • @mm759 请看我的更新。仅打印“INFO”。如果它考虑了日志配置文件,它应该已经打印了“FINE”级别的消息。
  • 我不知道更新 2 中的文件类型,但排除项看起来很奇怪。您可以在 Eclipse 中右键单击项目并查看“构建路径”。应该包括“src/main/resources”。

标签: java eclipse maven logging apache-commons-logging


【解决方案1】:

首先,确保您已安装 Eclipse 的 Maven 集成。然后右键单击您的 apache-common-java-logging-root 项目 > 配置 > 配置为 Maven 项目。

一旦您的项目启用了 Maven,在任何时候如果您认为 Eclipse IDE 与 Maven 设置不同,请右键单击项目 > Maven > Update Project... > 勾选 Update project configuration from pom.xml > OK

【讨论】:

    【解决方案2】:

    我的错。正如@mm759 所指出的,“src/main/resources”被选中。由于日志记录的工作方式,我感到很困惑。

    "java.util.logging.config.file=" 应该作为 VM 参数出现或出现在 .properties 文件中。

    【讨论】:

      最近更新 更多