2016-11-06 7 views
0

Я пытаюсь узнать весну. Так что я напечатал этот проект, но на управление это дает мне эту ошибкуРазрешение NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:145) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:84) 
at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:59) 
at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:58) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
at maven.spring.trial.App.main(App.java:12) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 12 more 

Я пробовал много решений, заданных на SO уже, как добавление Викисклада регистрации через мавенна, загрузив банку и добавить его в моем внешнем Библиотеки.

Это скриншот моего дерева структурообразующих

enter image description here

Мой pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.mkyong.common</groupId> 
<artifactId>SpringExamples</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>SpringExamples</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.10</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.2</version> 
     <scope>compile</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring</artifactId> 
     <version>2.5.6</version> 
    </dependency> 

</dependencies> 

Я бегу проект от моего App.java

Может кто-нибудь помочь мне с этим? Спасибо заранее.

ответ

1

Если вы запустите это приложение в контейнере сервлетов или сервлете приложения, который уже предоставляет библиотеку регистрации доменов, вам необходимо сменить скомпилированную область. Похоже, что этот

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.2</version> 
    <scope>provided</scope> 
</dependency> 

В то время как вы должны изменить его, такие как:

<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <version>1.2</version> 
</dependency> 

При создании приложения на мавена, эта библиотека будет упакована вместе с другими в библиотеке войны файл. Затем эта проблема разрешена.

Надеюсь, что эта помощь!

0

JAR, которые вы добавили в свой maven pom, доступны только во время компиляции.

Но вам также нужны эти банки во время работы (как основная программа).

NoClassDefFoundError приходит, когда ваш class НЕ доступен в пути к классам во время выполнения. Поэтому добавьте эти JAR-файлы в путь класса Runtime.

Вы можете посмотреть here, чтобы настроить JAR в Intellij.

Смежные вопросы