2

「log4j.xml」をロードする Java コードで「mvn test」を実行しようとしています。ファイルが見つからないという例外が発生しています。いくつかの助けを得ることは素晴らしいことです。

私のJavaコード:

public class MyClass {
    static Logger logger = Logger.getLogger(MyClass.class);
    public boolean check(){
        try{
            DOMConfigurator.configure("log4j.xml");
            logger.info("into the method");
        }
        return true;
    }
}

Junit テスト ケース:

import static org.junit.Assert.*;

import org.junit.Test;

public class MyClassTests {

    @Test
    public void testCheck() {
        MyClass myc = new MyClass();
        assertEquals(true, myc.check()); 
    }
}

pom.xml のブロック

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.15</version>
        <configuration>
            <includes>
                <include>**/*Tests.java</include>
                <include>log4j.xml</include>
            </includes>
            <argLine>-Xmx512m</argLine>
        </configuration>
        <inherited>true</inherited>
    </plugin>

ファイル構造:

  • pom.xml = */myproject/pom.xml
  • log4j.xml = */myproject/src/main/resources/log4j.xml
  • myclass.java = */myproject/src/main/java/MyClass.java
  • junit テスト = */myproject/src/test/java/MyClassTests.java

コマンド「mvn test」を実行すると、log4j.xml のファイルが見つからないという例外が発生します。

java.io.FileNotFoundException: */myproject/log4j.xml (そのようなファイルまたはディレクトリはありません)

基本的に、コードは /src/main/resources フォルダーではなく、プロジェクトのルート フォルダーで log4j.xml を探します。コードを「DOMConfigurator.configure("/src/main/resources/log4j.xml");」に変更したくありません。これにより、デプロイされたアプリケーションで問題が発生します。よりエレガントなソリューションが必要です。

4

1 に答える 1

-1

POM が表示されませんが、src/main/resources がクラス リソースとして利用できるように、ビルド宣言にリソース セクションが必要です。

    <build>
    <outputDirectory>build/maven/${artifactId}/target/classes</outputDirectory>

<resources>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
</build>

次に、DOMConfigurator は log4j.xml をクラス リソースとして見つけることができるはずです。プロジェクトで Maven パッケージを実行する場合は、ビルドまたはターゲット フォルダーを調べて、log4j.xml がクラス フォルダーにコピーされていることを確認する必要があります。次に、それがリソースとして利用可能であることがわかります。

于 2013-10-23T17:23:48.590 に答える