Я пытаюсь просто Maven приложение с Log4J версии 2-бета 9. В моем файле pom.xml у меня есть эти две зависимости (как указано в Log4J Maven webpage):Как работать с CLASSPATH в проекте Maven?
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0-beta9</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0-beta9</version>
</dependency>
Затмение видит Log4J библиотека:
Но когда я упаковать приложение и запустить его это исключение:
java -cp target/notification-1.0.0.jar com.example.Sandbox
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
at com.example.Sandbox.<clinit>(Sandbox.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 1 more
I выполнил поиск этого исключения и, похоже, связан с переменной CLASSPATH.
Как должен быть установлен CLASSPATH для проекта Maven?
это может быть как больше log4j jar доступно в вашем пути к классу и его получение confilcted –
Да, мой собственный другой проект, что зависимость для этого приложения также использует Log4J, может быть, это проблема? Я не уверен. – user2148736
В Maven jar, созданный 'mvn package', не содержит его зависимостей. Поэтому вы должны добавить log4j- * в свой путь к классам. Вы можете проверить такие вещи, как maven-assembly-plugin, чтобы создать jar-with-dependencies. – khmarbaise