【问题标题】:Exception in thread main - maven dependency线程 main 中的异常 - maven 依赖项
【发布时间】:2015-08-02 06:29:41
【问题描述】:
public class BatchLauncherSpring {

    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext(
                "application-context.xml");

        //////
    }
}

我在运行 main 方法时遇到 ClassNotFoundException。 Spring 依赖项是通过 Maven 添加的,这些依赖项在编译时解决。那里有很多类似的问题,但是当代码被打包为 jar 并在 eclipse 之外执行时,每个人似乎都遇到了问题。当我在 Eclipse 中运行它时,我实际上遇到了这个问题。

这是 pom 文件

<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">

    <parent>
        <groupId>com.mycompany</groupId>
        <artifactId>mybatch</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>mybatchCore</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>mybatchCore</name>
    <url></url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>3.2.2.RELEASE</spring.version>
        <spring.batch.version>2.2.5.RELEASE</spring.batch.version>
    </properties>

    <dependencies>
        <dependency>
                <groupId>com.my.repo</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>com.my.repo</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>com.my.repo</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>com.my.repo</groupId>
                <artifactId>spring-batch-core</artifactId>
                <version>${spring.batch.version}</version>
            </dependency>
            <dependency>
                <groupId>com.my.repo</groupId>
                <artifactId>spring-batch-infrastructure</artifactId>
                <version>${spring.batch.version}</version>
            </dependency>


    </dependencies>

</project>

堆栈跟踪

java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 原因: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext 在 java.net.URLClassLoader$1.run(URLClassLoader.java:200) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:188) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:252) 在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 线程“main”中的异常

这里有什么问题?谢谢!

【问题讨论】:

  • 你能显示堆栈跟踪吗?
  • 为什么使用com.my.repo作为grouId来获取Spring库而不是官方的groupId org.springframework
  • 你有spring-context依赖吗!?
  • @DirkLachowski - 添加了堆栈跟踪

标签: java spring maven pom.xml


【解决方案1】:

你需要 spring-context 依赖 快乐编码

【讨论】:

    【解决方案2】:

    如果没有堆栈跟踪,我们只能猜测,但我首先想到的是您将其用于 spring 依赖项的 groupId:com.my.repo。那应该是org.springframework

    我什至不确定这是如何编译的。

    【讨论】:

    • 我们公司有自己的repo。我们不应该使用默认的 Maven groupId
    • @RKodakandla 然后不要在这里提出问题,而是向您公司的同事提出问题。更重要的是,我会向负责这个 !@#$%& 设计的人提出问题。
    • 他可能使用的是内部仓库,这是 maven 仓库的快照
    • @LuiggiMendoza dude from your comment 我想说你是一个家庭编码器,公司通常使用他们自己的仓库,因为他们可以推送他们的第三方罐子和可供空洞团队使用的东西,做你研究 ;)
    • 我不知道,为什么这令人困惑,这就是 Nexus、Artifactory、Archiva 等的工作方式。
    猜你喜欢
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多