Исключение в потоке "main" java.lang.NoClassDefFoundError: org / springframework / context / support / ClassPathXmlApplicationContext - PullRequest
0 голосов
/ 13 марта 2019

Я получаю следующую ошибку при запуске jar с помощью командной строки, он работает на eclipse, но как только я строю проект с помощью команды: mvn clean install и запускаю с помощью команды: java -jar target / quartz-exampleОшибка получения -2.0.0.jar

Ошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/support/ClassPathXmlApplicationContext
        at com.example.ExampleTest.main(ExampleTest.java:11)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.support.ClassPathXmlApplicationContext
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)

Основной класс:

    package com.example;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ExampleTest {
    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("quartz-servlet.xml");
    }
}

quartz-servlet.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans     
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd">



<bean id="service" class="com.example.Service" />

<bean name="myJob" class="org.springframework.scheduling.quartz.JobDetailBean">

    <property name="jobClass" value="com.example.MyJob" />

    <property name="jobDataAsMap">
        <map>
            <entry key="service" value-ref="service" />
        </map>
    </property>

</bean>

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

    <property name="jobDetail" ref="myJob" />
    <property name="cronExpression" value="0/30 * * * * ?" />

</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobDetails">
        <list>
            <ref bean="myJob" />
        </list>
    </property>

    <property name="triggers">
        <list>
            <ref bean="cronTrigger" />
        </list>
    </property>
</bean>

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>quartz-example</artifactId>
<version>2.0.0</version>
<packaging>jar</packaging>

<name>quartz-example</name>
<description>Quartz Example</description>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.2.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.2.2.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>3.1.2.RELEASE</version>
    </dependency>
        <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>



    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>1.8.6</version>
    </dependency>

</dependencies>


<build>
    <pluginManagement>
        <plugins>
            <!-- Set JDK Compiler Level -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.2</version>
            <executions>
                <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <overWriteReleases>false</overWriteReleases>
                    <overWriteSnapshots>false</overWriteSnapshots>
                    <overWriteIfNewer>true</overWriteIfNewer>
                    <includeScope>runtime</includeScope>
                </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>3.0.2</version>
            <executions>
                <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <overWriteReleases>false</overWriteReleases>
                    <overWriteSnapshots>false</overWriteSnapshots>
                    <overWriteIfNewer>true</overWriteIfNewer>
                    <includeScope>runtime</includeScope>
                </configuration>
                </execution>
            </executions>
        </plugin>
        <!-- Build an executable JAR -->
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>com.example.ExampleTest</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
        </plugins>
    </pluginManagement>

</build>

1 Ответ

0 голосов
/ 13 марта 2019

Когда вы запускаете флягу командой java -jar target/quartz-example-2.0.0.jar, вы не указываете путь к классу и, следовательно, JVM не знает, где искать пружинные классы

Вы можете использовать 2 подхода:

  • указать путь к классу с помощью этой команды java -cp YOUR_PATH_TO_ALL_NEEDED_JAR -jar target/quartz-example-2.0.0.jar
  • создайте одну общую банку, где у вас есть все необходимые классы (также весенние) с помощью некоторого плагина Maven, как описано здесь Включая зависимости в банке с Maven

Лично я предпочитаю первый подход, потому что он разделяет области видимости ... ты - твой кувшин, а пружинные кувшины принадлежат весне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...