Spring导出可以运行的jar包

Spring Boot 项目导出与部署 一、jar形式 1、导包 将pom.xml中设为:<packaging>jar</packaging> 从Spring Boot项目路径打开cmd窗口从Spring Boot项目路径打开cmd窗口 输入: mvn package 2、运行 进入项目中的target路径 输入: java -jar (刚刚导出的jar包的名称) 阅读详情

最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn assembly:assembly即可,详情可以参考:http://www.cnblogs.com/liqiu/p/3816068.html

可是如果包含Spring,那么这么方法就不可行,报错:

Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace

我在网上折腾了两天,这是assembly的一个bug。参见:http://jira.codehaus.org/browse/MASSEMBLY-360

据说原因是spring的多个jar包中都含有spring.handlers和spring.schemas文件,而assembly只会把第一次遇到的文件打入jar包,后面遇到的都会skip掉。

解决方法就是放弃assembly,使用shade插件来打包.在shade的打包配制中指明spring.handlers和spring.schemas文件会以append方式加入进来,从而确保其他spring的jar中的这两个文件的信息不会被遗漏。

下面是一个非常简单的例子,只有四个文件的Maven工程,代码再附件内:

1、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.javaee</groupId>
    <artifactId>main-spring</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.0.6.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.7</version>

                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <finalName>my-spring-app</finalName>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.test.Main</mainClass>
                                </transformer>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.tooling</resource>
                                </transformer>
                            </transformers>

                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

2、applicationContext.xml(Spring的配置文件)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        ">
    <context:annotation-config />
    <context:component-scan base-package="com.*" />
</beans>

3、代码事例

package com.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String findUser() {
        return "find liqiu";
    }
}
package com.exec;

import org.springframework.context.support.GenericXmlApplicationContext;

import com.service.UserService;

public class Main {

    public static void main(String[] args) throws InterruptedException {
        GenericXmlApplicationContext context = new GenericXmlApplicationContext();
        context.setValidating(false);
        context.load("classpath:applicationContext.xml");
        context.refresh();
        UserService userService = context.getBean(UserService.class);
        while (true) {
            System.out.println(userService.findUser());
            Thread.sleep(10000);
        }
    }
}

在命令行运行:mvn package

然后在target目录会产出一个jar包:my-spring-app.jar

运行即可:java -jar target/my-spring-app.jar

五月 16, 2015 10:46:52 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
五月 16, 2015 10:46:53 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.GenericXmlApplicationContext@4a5e88f7: startup date [Sat May 16 22:46:53 CST 2015]; root of context hierarchy
五月 16, 2015 10:46:53 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@18fd54ec: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,userService]; root of factory hierarchy
find liqiu
find liqiu

当然也可以这么运行:java -classpath target/my-spring-app.jar com.exec.Main

源代码下载地址:http://files.cnblogs.com/files/liqiu/main-spring.tar.gz



ps :

maven 操作






[INFO] Attaching shaded artifact.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.438 s
[INFO] Finished at: 2016-08-17T17:45:00+08:00
[INFO] Final Memory: 34M/219M
[INFO] ------------------------------------------------------------------------
FATAL ERROR in native method: JDWP on getting class status, jvmtiError=JVMTI_ERROR_WRONG_PHASE(112)
#
JDWP exit error JVMTI_ERROR_WRONG_PHASE(112): on getting class status [../../../src/share/back/util.c:1283]






S/4中的16种特殊库存类型 阅读详情

相关推荐

矩阵LED和矩阵按键

先说矩阵LED,如图: 下面以行几、列几的表达方法说明 三极管可以当做开关使用 由图可知,如果想让一个LED亮,那么它对应的行和列的三极管都要导通。如果这个矩阵每次只亮一个LED,那么正常写程序没问题。 如果我们想让LED1和LED6亮,其他灯不亮,则需要开启行1、行2、列1、列2,随之带来的问题就是LED2和LED5也会跟着亮起来。 解决方法类似于扫描,因为单片机运行速度很快,可以在很短的时间内开关数次而肉眼看不到。所以我们可以每次只亮一列(排)灯,亮单位时间后关掉同时开启另外一列(排),如此四次一循环

qq_46615634的博客 5794

Spring jar包下载

Spring的下载及目录结构 Spring的第一个版本是在2004年发布的,经过10多年的发展,Spring的版本也在不断地升级优化中。 Spring开发所需的JAR包分为两个部分,具体如下。 1、Spring框架包 Spring4.3.6版本的框架压缩包,名称为spring-framework- 4.3.6.RELEASE-dist.zip, 此压缩包可以通过地址"https://repo.spring.io/simple/libs-release-local/org/springframework/sp

iijik55的博客 7583

手把手教你用Pico4UE搭建100平米VR大空间:从设备检查、系统升级到地图绘制全流程

本文详细介绍了使用Pico4UE搭建100平米VR大空间的完整流程,包括设备检查、系统升级、地图绘制和性能优化等关键步骤。通过实战案例和专业技术建议,帮助用户高效部署企业级VR解决方案,适用于展厅漫游、工业仿真等多种场景。

weixin_28273593的博客 507

【Spring】Spring 下载及其 jar 包

Spring 下载 Spring 官方文档 Spring 的 jar 文件 Spring 所有 jar 包及其描述汇总

emmmm..... 6176

告别信号干扰!用Altium Designer 19搞定4层/6层PCB叠层设计的保姆级流程

本文详细介绍了如何使用Altium Designer 19进行4层/6层PCB叠层设计,解决信号干扰问题。通过实际案例和系统方法论,涵盖高速数字电路、混合信号系统等典型场景的设计优化,帮助硬件工程师和学生掌握电磁兼容(EMC)与信号完整性(SI)的核心技术。

weixin_27076351的博客 206

低成本实现webhook接收端[python]

Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。

锡城小凯的博客 1万+

Spring各jar包详解

Spring各jar包详解 spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar,aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。 spring-src.zip就是所有的源代码压缩包。 除了spring.jar 文件,Spring 还包括有其它21 个独立的jar 包,各自包含着对应的Sprin...

SaoLife的博客 1204

[系统安全] 三十二.恶意代码检测(2)常用技术详解及总结

前文从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识,在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。希望这篇文章对您有所帮助,如果文章中存在错误、理解不到位或侵权的地方,还请告知作者与海涵。且看且珍惜,加油~

杨秀璋的专栏 1万+

Spring涉及到的jar包详解

Spring.jar是包含有完整发布模块的单个jar 包。但是不包括mock.jar,aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。 spring-src.zip就是所有的源代码压缩包。 除了spring.jar 文件,Spring 还包括有其它21 个独立的jar 包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar 包,而不必引入整个spring.jar的所有类文件。 1.spring-aop 这.

经历过大厂、小厂风风雨雨的程序佬 2972

手把手教你学Simulink--基于电能质量与无功补偿的场景实例:统一电能质量调节器(UPQC)的联合控制仿真

在现代电力系统中,电能质量问题有源电力滤波器(APF)→ 治理谐波与无功动态电压恢复器(DVR)→ 补偿电压暂降/暂升静止无功发生器(SVG)→ 无功补偿与电压支撑而统一电能质量调节器(Unified Power Quality Conditioner, UPQC)是一种集串联补偿与并联补偿于一体的全能型电能质量治理装置✅ 电压类问题:暂降、暂升、不平衡、闪变✅ 电流类问题:谐波、无功、三相不平衡✅ 实现双向有功交换(储能型)串联单元(DVR功能):串联于线路,控制电源侧电压质量并联单元。

MHD0815的博客 239

基于STM32L4XX、HAL库的ICM-42670-P姿态传感器驱动程序设计

sprintf(buffer, "温度: %.1f °C\r\n\r\n", sensor_data.temperature);sprintf(buffer, "陀螺仪: X=%.2f Y=%.2f Z=%.2f rad/s\r\n",sprintf(buffer, "加速度: X=%.2f Y=%.2f Z=%.2f m/s²\r\n",sprintf(buffer, "开始校准IMU,请保持传感器静止...\r\n");sprintf(buffer, "读取传感器数据失败\r\n");

zhusl6688的博客 642

Spring -- Spring jar 包及依赖

corecore 部分包含 4 个模块spring-core:依赖注入IoC与DI的最基本实现spring-beans:Bean工厂与bean的装配spring-context:spring的context上下文即IoC容器spring-expression:spring表达式语言依赖关系:spring-core 依赖 commons-loggins>commons-loggingspring-beans 依赖 spring-core。

m0_67402588的博客 714

安卓中蓝牙免提HFP的一些分析

最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。 文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先...

底层码农 772

Spring Boot直接导出jar包发布运行

第一步:从Eclipse中导出对应的可运行的jar包 1:选中对应的java项目——右键——导出 2:选择导出java项目——可运行的JAR文件    3:关键步骤 launch Configuration:选择主类运行文件(如果下拉框选择不到,可以单独运行一次该文件:Run As  Java Application)       Library handling:

realbeckham的ADF学习总结 7836

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

eclipse导出的jar包双击运行不了_使用eclipse搭建spring boot框架搭建

传统spring 项目框架的搭建需要大量的配置,而且项目的开发,测试都需要依赖服务器,使得开发相对比较耗时。spring boot 很好的解决了上述问题。它把繁琐的spring配置进行了分装,搭建spring boot 框架一般而言几乎不需要对spring做任何的配置便可运行。另外,由于spring boot自带服务器,所以项目可以以jar的形式直接运行,便利了开发及测试的部署环节。下面对spri...

weixin_35943776的博客 396

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring项目导出可运行jar包

最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn assembly:assembly即可 1、首先在pom.xml里面添加: &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-assembly-plugin&l...

冯三思 3339

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spring Boot:工程导出jar包后用jar包运行

spring boot支持工程导出jar包运行,不需要tomocat,步骤如下; 将工程打成jar包 将打完包的jar目录复制到某个文件夹 用cmd运行jar包,先在jar包文件夹单机右键选择在此处打开powershell窗口 输入java -jar 加jar包名即可运行 出现这个画面说明就启动成功了,再访问一下 访问成功,ok了! 最后还有一个遇到的问题,我本地环境jdk版本是15,jar包运行环境的版本是jdk8,用cmd启动就会报错,因为版本不兼容,解决方案如下: file-settin

weixin_42201350的博客 271

spring boot 导出jar 包,运行报错无法加载 orcl驱动的问题。

原因是因为orcl数据库是收费的,所以在pom文件中无法导入所以需要手动添加jar包,但是打包的时候无法将手动的jar包打包,只打包maven中的jar。 解决的办法: 需要自己本地创建一个maven本地仓库,然后需要配置环境 。 将执行 mvn install:install-file -Dfile=C:/ojdbc14.jar -DgroupId=com.oracle -Dart...

现实和理想永远有差距 1530

Spring Boot导出jar包发布

Spring Boot导出jar包发布 一:事由 现在的项目组开发项目使用的是Spring Boot的技术,开发的时候是直接通过一个入口主函数来启动项目的。如果将项目交给客户,怎样才能正确的发布运行呢?百度了一下有关的知识,大概了解到是通过导出jar包,直接运行来实现的。不过从网上查阅的资料,都不太理想,于是自己和另外一个同事就倒腾开了。倒腾了好一会,最终找到了一个比较简单有效的方法来实现,现...

zhangbijun1230的专栏 1123

SpringBoot生成Jar包并且转成exe可执行文件方案

1. 项目导出Jar包 1.2 pom.xml文件修改 <build> <finalName>sales-receipt</finalName> <plugins> <!--解决SpringBoot打包成jar后运行提示没有主清单属性--> <plugin> <groupId>org.springframework.boot</groupId

hct368的博客 948

Eclipse 生成 jar 包

本文介绍了在Eclipse中生成可执行JAR包的四种实用方法:1)快速生成可执行JAR(Runnable JAR);2)生成普通JAR(适合作为库);3)Spring Boot项目的最佳打包方案(使用Maven);4)高级技巧与常见问题解决。针对不同项目类型推荐了对应的打包方式,并提供了详细的操作步骤和注意事项,帮助开发者快速生成可执行的JAR文件。

m0_57545130的博客 1147

JD-GUI反编译jar包为Java源代码

程序员难免要借鉴其他java工程的代码。可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成可编译运行的项目。本文介绍的反编译工具是JD-GUI。反编译的jar包是一个springboot项目的jar包。 反编译工具使用 下载JD-GUI后解压,无需安装,双击打开exe文件。 open file选择要反编译的jar包, 打开,左侧classes->com目录下就是java源代码文件 点击想查看的文件,可以看到源代码,点击有下.

xllntld的专栏 4642

Idea导出可运行Jar包

一、导出Jar包可以使用Maven方式 <project> ... <packaging>jar</packaging> ... <build> <finalName>cnblog</finalName> <plugins> <plugin&...

225

SpringBoot学习笔记(二)jar包部署,配置文件初探

jar 包导出并部署,配置文件初探

金装二百五博客 773

在可执行jar包中调用配置文件

问题: 当把用Spring框架开发的java project(在Eclipse中可以正常执行)导出为可执行jar包时,单独执行jar包会出现无法找到applicationContext.xml文件的问题; 原因: applicationContext.xml文件是被打包到jar包内部的,而jar包独立运行时,该程序只能识别jar外部的文件,无法识别内部文件。 解决方案: 在启动初

zxygww的专栏 4072
上一篇: eclipse在线安装FatJar插件失败解决方案
下一篇: linux中某个端口拒绝远程主机连接原因及解决方法
琅琊山二当家
博客等级 码龄18年 447粉丝 322原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值