使用maven生成可执行jar:找不到类异常

Posted

技术标签:

【中文标题】使用maven生成可执行jar:找不到类异常【英文标题】:Generate executable jar with maven : class not found exception 【发布时间】:2017-07-23 19:50:37 【问题描述】:

我有一个通过maven管理的Spring JMS项目,在部署jar文件(java -jar jarname.jar)时遇到如下问题:

线程“main”中的异常 org.springframework.beans.factory.BeanCreationException:错误 创建名称为“outgoingMessageEventListener”的bean 类路径资源 [deltaMessageListenerContainer.xml]:不能 在设置 bean 时解析对 bean 'deltaBankMessageService' 的引用 属性“deltaBankMessageService”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“deltaBankMessageService”的bean 路径资源 [data-access.xml]:无法解析对 bean 的引用 'messageOutDao' 同时设置 bean 属性'messageOutDao';嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 在类路径中定义名称为“messageOutDao”的 bean 创建错误 资源 [data-access.xml]:bean 的实例化失败;嵌套的 例外是 org.springframework.beans.BeanInstantiationException: 无法实例化 bean 类 [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: 构造函数抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308) 在 org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:947) 在 org.springframework.context.support.AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:701) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) 在 com.delta.jms.server.bootstrap.Startup.main(Startup.java:26) 引起:org.springframework.beans.factory.BeanCreationException: 创建名称为 'deltaBankMessageService' 的 bean 时出错 类路径资源 [data-access.xml]:无法解析对 bean 'messageOutDao' 同时设置 bean 属性 'messageOutDao'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“messageOutDao”的 bean [data-access.xml]:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:不能 实例化 bean 类 [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: 构造函数抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 19 更多原因: org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“messageOutDao”的 bean [data-access.xml]:bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:不能 实例化 bean 类 [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: 构造函数抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 32 更多原因: org.springframework.beans.BeanInstantiationException:不能 实例化 bean 类 [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: 构造函数抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor 在 org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) ... 43 更多原因:java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor 在 org.springframework.orm.ibatis.support.SqlMapClientDaoSupport.(SqlMapClientDaoSupport.java:46) 在 com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao.(SqlMapMessageOutDao.java:23) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) ... 45 更多原因:java.lang.ClassNotFoundException: com.ibatis.sqlmap.client.SqlMapExecutor 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 52 更多

谢谢。

苹果机


谢谢罗纳德。我现在有这个新错误:

线程“main”中的异常 org.springframework.beans.factory.BeanCreationException:错误 创建名称为“outgoingMessageEventListener”的bean 类路径资源 [deltaMessageListenerContainer.xml]:不能 在设置 bean 时解析对 bean 'deltaBankMessageService' 的引用 属性“deltaBankMessageService”;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建类中定义的名称为“deltaBankMessageService”的bean 路径资源 [data-access.xml]:无法解析对 bean 的引用 'jmsSender' 同时设置 bean 属性'jmsSender';嵌套异常 是 org.springframework.beans.factory.BeanCreationException: 错误 创建在类路径资源中定义的名称为“jmsSender”的 bean [jmsConnectionFactory.xml]:无法解析对 bean 的引用 'jmsQueueTemplate' 同时设置 bean 属性'jmsTemplate102'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“jmsQueueTemplate”的bean 资源 [jmsConnectionFactory.xml]:bean 的实例化失败; 嵌套异常是 java.lang.NoClassDefFoundError: javax/jms/JMSException 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308) 在 org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:947) 在 org.springframework.context.support.AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:701) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) 在 org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) 在 com.delta.jms.server.bootstrap.Startup.main(Startup.java:26) 引起:org.springframework.beans.factory.BeanCreationException: 创建名称为 'deltaBankMessageService' 的 bean 时出错 类路径资源 [data-access.xml]:无法解析对 bean 'jmsSender' 同时设置 bean 属性 'jmsSender';嵌套的 例外是 org.springframework.beans.factory.BeanCreationException: 在类路径中定义名称为“jmsSender”的 bean 创建错误 资源 [jmsConnectionFactory.xml]:无法解析对 bean 的引用 'jmsQueueTemplate' 同时设置 bean 属性'jmsTemplate102'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“jmsQueueTemplate”的bean 资源 [jmsConnectionFactory.xml]:bean 的实例化失败; 嵌套异常是 java.lang.NoClassDefFoundError: javax/jms/JMSException 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 19 更多原因: org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“jmsSender”的 bean [jmsConnectionFactory.xml]:无法解析对 bean 的引用 'jmsQueueTemplate' 同时设置 bean 属性'jmsTemplate102'; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“jmsQueueTemplate”的bean 资源 [jmsConnectionFactory.xml]:bean 的实例化失败; 嵌套异常是 java.lang.NoClassDefFoundError: javax/jms/JMSException 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 32 更多原因: org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“jmsQueueTemplate”的bean 资源 [jmsConnectionFactory.xml]:bean 的实例化失败; 嵌套异常是 java.lang.NoClassDefFoundError: javax/jms/JMSException 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 在 java.security.AccessController.doPrivileged(Native Method) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 45 更多原因:java.lang.NoClassDefFoundError: javax/jms/JMSException 在 java.lang.Class.getDeclaredConstructors0(Native Method) 在 java.lang.Class.privateGetDeclaredConstructors(Class.java:2493) 在 java.lang.Class.getConstructor0(Class.java:2803) 在 java.lang.Class.getDeclaredConstructor(Class.java:2053) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:54) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) ... 56 更多原因:java.lang.ClassNotFoundException: javax.jms.JMSException 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 62 更多

【问题讨论】:

【参考方案1】:

看起来您缺少一些依赖项 jar。当我遇到此类错误时,我总是这样做

    搜索(Google)包含缺少的类的 jar,在您的情况下为 com.ibatis.sqlmap.client.SqlMapExecutor

    将 jar 添加到您的 maven pom.xml 依赖项中

还请注意,有时如果您的类路径中某处有同一个 jar 的两个版本,则可能会出现此问题。在这个 scnerio 中,您可以打开详细模式以查看在运行时选择了哪个版本

【讨论】:

感谢 Yohannes 的帮助。【参考方案2】:

显然你的类路径中没有com.ibatis.sqlmap.client.SqlMapExecutor。您使用 maven 作为构建工具,因此请检查您的 POM 是否存在依赖关系。

我不知道你真正需要哪种依赖,但它应该是这样的:

<dependency>
    <groupId>org.apache.ibatis</groupId>
    <artifactId>ibatis-sqlmap</artifactId>
    <version>2.3.0</version>
</dependency>

【讨论】:

谢谢你,罗纳德,你的回答。我忘了告诉你,如果我从 Eclipse 运行程序,我就没有这个问题!我不知道为什么当我运行 jar 时,我得到了这个错误?! Eclipse 中的类路径包括: 当前 Java 项目和通过当前项目属性中的 Java 构建路径或构建路径中的任何库添加到类路径的任何 Java 项目。这就是它可能在 Eclipse 中运行而不是作为可执行 jar 的原因。您必须将所有依赖的 jar 打包到您的 jar 中。所以,问题仍然存在。您是否在 pom 中包含了缺少的依赖项? 谢谢你,罗纳德,我确实按照你说的添加了新的依赖项,旧的错误已经消失了,但我在上面得到了一个新的。 您缺少另一个依赖项:java.lang.ClassNotFoundException: javax.jms.JMSException。正如@Yohannes 所说:搜索 jar 并将缺少的依赖项添加到您的 pom.xml 中。在解决所有缺失的依赖项之前,您必须这样做。 我要感谢罗纳德的帮助!其实我确实找到了主要问题!我在 pom.xml 中将一些依赖项设置为 system ,并将这些 jar 文件的绝对路径放在 标记中。当我将项目打包为可执行 jar 文件时,它不会将这些依赖项放入其中!所以为了避免这种情况,我将这些特定的 jar 上传到 Nexus 服务器(我已经有一个),并在 pom.xml 中将它们声明为范围编译,仅此而已!我克服了这些“依赖”错误,但我遇到了另一种错误!我可以编辑我的帖子还是只创建一个新帖子?【参考方案3】:

我要感谢 Ronald 和 Yohannes 的帮助!实际上,我确实找到了主要问题!我在 pom.xml 中作为系统创建了一些依赖项,并将这些 jar 文件的绝对路径放在标签中。当我将项目打包为可执行 jar 文件时,它不会将这些依赖项放入其中!所以为了避免这种情况,我将这些特定的 jar 上传到 Nexus 服务器(我已经有一个),并在 pom.xml 中将它们声明为范围编译,仅此而已!我克服了这些“依赖”错误,但我遇到了另一种错误!

【讨论】:

以上是关于使用maven生成可执行jar:找不到类异常的主要内容,如果未能解决你的问题,请参考以下文章

idea中maven项目 ,找不到jar包,找不到类;下载未下载完的jar包

在Maven构建期间找不到来自外部jar的类文件? [复制]

maven新建项目报错,找不到SpringServletContainerInitializer类

Maven打包所有依赖到一个可执行jar中

maven target 怎么运行 找不到或无法加载主类

maven - 在打包的 jar 中找不到引用的库 [重复]