精华内容
下载资源
问答
  • Spring-boot所需jar包 Spring-boot所需jar包 附带 springmvc.jar附带 springmvc.jar附带 springmvc.jar
  • spring boot打包jar直接运行

    千次阅读 2017-07-13 19:44:14
    spring-boot项目打包成jar形式直接在命令行运行的方法

    首先确保项目本身是一个spring boot项目,打包方式为jar。


    打包方式的设置其实非常简单,在spring-boot框架下需要再引入其他的依赖,直接在pom文件的overview视图中就可以很方便的设置,这里设置为jar。

    但是此时是不能直接打包的,否则在命令行界面运行的时候会出现找不到主清单或者找不到类之类的错误,可以通过修改jar中META-INF中的一个文件来解决,但是十分麻烦,经过参考资料后,发现有个简单的方法,只要引入如下的依赖即可:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.boot.Starter</mainClass><!--这个要改成自己的入口类-->
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    然后修改configuration标签内容为自己的入口类!!

    之后直接maven-package打包项目,会在target文件夹下生成jar文件,选择以jar为后缀的即可,origin的不能直接使用,拷贝出来,在jar文件所在文件夹打开命令行,使用命令 Java -jar jar文件名(如test.jar)即可运行啦!


    运行后结果如图:


    不过需要注意的是,如果关闭了命令行,部署的程序也会关闭!

    展开全文
  • 在开发完spring boot 项目之后,我们需要把它称jar包,然后在命令行输入java -jar ,但在这时却弹出没有主清单属性  打开生成的jar,里面有一个MANIFEST.MF的文件把它打开: 发型并没有 Main-Class执行主类这...

    在开发完spring boot 项目之后,我们需要把它称jar包,然后在命令行输入java -jar ,但在这时却弹出没有主清单属性

     打开生成的jar,里面有一个MANIFEST.MF的文件把它打开:

    发型并没有 Main-Class执行主类这个配置;

    一种解决办法就是手动添加Main-Class 文件

    然后重新运行即可;

     怎么才能打个直接可以运行的jar呢?使用maven插件指定主类

             注意!!!当工程使用parent工程统一管理jar包,其他子项目依赖你的父工程时要添加repackage这个目标;我们在<executions>标签里配置的<goal>repackage</goal>对应spring-boot:repackage这个目标,打包时排除resources下的资源文件 

    简单点说,就是创建一个自动可执行的jar或war文件。它可以替换常规的artifact,或者用一个单独的classifier附属在maven构建的生命周期中。一般情况,这个目标会打一个新的jar/war,并把maven默认打的jar/war添加.original后缀,在target目录下可以看到:

     

    这时打开jar包查看 MANIFEST.MF的文件,即可看到Main-Class属性

    展开全文
  • Spring Boot JAR 安全加密运行工具,同时支持的原生JAR。 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。 功能特性 无需侵入代码,只需要把...

    XJar

    GitHub: https://github.com/core-lib/xjar

    Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR.

    基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动, 动态解密运行的方案, 避免源码泄露以及反编译.

    功能特性

    • 无代码侵入, 只需要把编译好的JAR包通过工具加密即可.
    • 完全内存解密, 降低源码以及字节码泄露或反编译的风险.
    • 支持所有JDK内置加解密算法.
    • 可选择需要加解密的字节码或其他资源文件.
    • 支持Maven插件, 加密更加便捷.
    • 动态生成Go启动器, 保护密码不泄露.

    环境依赖

    JDK 1.7 +

    使用步骤

    1. 添加依赖

    <project>
        <!-- 设置 jitpack.io 仓库 -->
        <repositories>
            <repository>
                <id>jitpack.io</id>
                <url>https://jitpack.io</url>
            </repository>
        </repositories>
        <!-- 添加 XJar 依赖 -->
        <dependencies>
            <dependency>
                <groupId>com.github.core-lib</groupId>
                <artifactId>xjar</artifactId>
                <version>4.0.0</version>
                <!-- <scope>test</scope> -->
            </dependency>
        </dependencies>
    </project>
    
    • 必须添加 https://jitpack.io Maven仓库.
    • 如果使用 JUnit 测试类来运行加密可以将 XJar 依赖的 scope 设置为 test.

    2. 加密源码

    XCryptos.encryption()
            .from("/path/to/read/plaintext.jar")
            .use("io.xjar")
            .include("/io/xjar/**/*.class")
            .include("/mapper/**/*Mapper.xml")
            .exclude("/static/**/*")
            .exclude("/conf/*")
            .to("/path/to/save/encrypted.jar");
    
    方法名称参数列表是否必选方法说明
    from(String jar)二选一指定待加密JAR包路径
    from(File jar)指定待加密JAR包文件
    use(String password)二选一指定加密密码
    use(String algorithm, int keysize, int ivsize, String password)指定加密算法及加密密码
    include(String ant)可多次调用指定要加密的资源相对于classpath的ANT路径表达式
    include(Pattern regex)可多次调用指定要加密的资源相对于classpath的正则路径表达式
    exclude(String ant)可多次调用指定不加密的资源相对于classpath的ANT路径表达式
    exclude(Pattern regex)可多次调用指定不加密的资源相对于classpath的正则路径表达式
    to(String xJar)二选一指定加密后JAR包输出路径, 并执行加密.
    to(File xJar)指定加密后JAR包输出文件, 并执行加密.
    • 指定加密算法的时候密钥长度以及向量长度必须在算法可支持范围内, 具体加密算法的密钥及向量长度请自行百度或谷歌.
    • include 和 exclude 同时使用时即加密在include的范围内且排除了exclude的资源.

    3. 编译脚本

    go build xjar.go
    
    • 通过步骤2加密成功后XJar会在输出的JAR包同目录下生成一个名为 xjar.go 的的Go启动器源码文件.
    • 将 xjar.go 在不同的平台进行编译即可得到不同平台的启动器可执行文件, 其中Windows下文件名为 xjar.exe 而Linux下为 xjar.
    • 用于编译的机器需要安装 Go 环境, 用于运行的机器则可不必安装 Go 环境, 具体安装教程请自行搜索.
    • 由于启动器自带JAR包防篡改校验, 故启动器无法通用, 即便密码相同也不行.

    4. 启动运行

    xjar java -jar /path/to/encrypted.jar
    
    xjar javaw -jar /path/to/encrypted.jar
    
    nohup xjar java -jar /path/to/encrypted.jar
    
    • 在 Java 启动命令前加上编译好的Go启动器可执行文件名(xjar)即可启动运行加密后的JAR包.
    • 若使用 nohup 方式启动则 nohup 要放在Go启动器可执行文件名(xjar)之前.
    • 若Go启动器可执行文件名(xjar)不在当前命令行所在目录则要通过绝对路径或相对路径指定.
    • 仅支持通过 -jar 方式启动, 不支持-cp或-classpath的方式.

    注意事项

    1. 不兼容 spring-boot-maven-plugin 的 executable = true 以及 embeddedLaunchScript

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <!-- 需要将executable和embeddedLaunchScript参数删除, 目前还不能支持对该模式Jar的加密!后面可能会支持该方式的打包. 
        <configuration>
            <executable>true</executable>
            <embeddedLaunchScript>...</embeddedLaunchScript>
        </configuration>
        -->
    </plugin>
    

    2. Spring Boot + JPA(Hibernate) 启动报错问题

    如果项目中使用了 JPA 且实现为Hibernate时, 由于Hibernate自己解析加密后的Jar文件, 所以无法正常启动, 可以采用以下解决方案:

    1. clone XJar-Agent-Hibernate , 使用 mvn clean package 编译出 xjar-agent-hibernate-${version}.jar 文件
    2. 采用 xjar java -javaagent:xjar-agent-hibernate-${version}.jar -jar your-spring-boot-app.jar 命令启动

    3. 静态文件浏览器无法加载完成问题

    由于静态文件被加密后文件体积变大, Spring Boot 会采用文件的大小作为 Content-Length 头返回给浏览器,
    但实际上通过 XJar 加载解密后文件大小恢复了原本的大小, 所以浏览器认为还没接收完导致一直等待服务端.
    由此我们需要在加密时忽略静态文件的加密, 实际上静态文件也没加密的必要, 因为即便加密了用户在浏览器
    查看源代码也是能看到完整的源码.通常情况下静态文件都会放在 static/ 和 META-INF/resources/ 目录下,
    我们只需要在加密时通过 exclude 方法排除这些资源即可, 可以参考以下例子:

    XCryptos.encryption()
            .from("/path/to/read/plaintext.jar")
            .use("io.xjar")
            .exclude("/static/**/*")
            .exclude("/META-INF/resources/**/*")
            .to("/path/to/save/encrypted.jar");
    

    插件集成

    Maven项目可通过集成 xjar-maven-plugin 以免去每次加密都要执行一次上述的代码, 随着Maven构建自动生成加密后的JAR和Go启动器源码文件.

    xjar-maven-plugin GitHub: https://github.com/core-lib/xjar-maven-plugin

    <project>
        <!-- 设置 jitpack.io 插件仓库 -->
        <pluginRepositories>
            <pluginRepository>
                <id>jitpack.io</id>
                <url>https://jitpack.io</url>
            </pluginRepository>
        </pluginRepositories>
        <!-- 添加 XJar Maven 插件 -->
        <build>
            <plugins>
                <plugin>
                    <groupId>com.github.core-lib</groupId>
                    <artifactId>xjar-maven-plugin</artifactId>
                    <version>4.0.0</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>build</goal>
                            </goals>
                            <phase>package</phase>
                            <!-- 或使用
                            <phase>install</phase>
                            -->
                            <configuration>
                                <password>io.xjar</password>
                                <!-- optional
                                <algorithm/>
                                <keySize/>
                                <ivSize/>
                                <includes>
                                    <include/>
                                </includes>
                                <excludes>
                                    <exclude/>
                                </excludes>
                                <sourceDir/>
                                <sourceJar/>
                                <targetDir/>
                                <targetJar/>
                                -->
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    

    对于Spring Boot 项目或模块, 该插件要后于 spring-boot-maven-plugin 插件执行, 有两种方式:

    • 将插件放置于 spring-boot-maven-plugin 的后面, 因为其插件的默认 phase 也是 package
    • 将插件的 phase 设置为 install(默认值为:package), 打包命令采用 mvn clean install

    也可以通过Maven命令执行

    mvn xjar:build -Dxjar.password=io.xjar
    mvn xjar:build -Dxjar.password=io.xjar -Dxjar.targetDir=/directory/to/save/target.xjar
    

    但通常情况下是让XJar插件绑定到指定的phase中自动执行, 这样就能在项目构建的时候自动构建出加密的包.

    mvn clean package -Dxjar.password=io.xjar
    mvn clean install -Dxjar.password=io.xjar -Dxjar.targetDir=/directory/to/save/target.xjar
    

    强烈建议

    强烈建议不要在 pom.xml 的 xjar-maven-plugin 配置中写上密码,这样会导致打包出来的 xjar 包中的 pom.xml 文件保留着密码,极其容易暴露密码!强烈推荐通过 mvn 命令来指定加密密钥!

    参数说明

    参数名称命令参数名称参数说明参数类型缺省值示例值
    password-Dxjar.password密码字符串String必须任意字符串, io.xjar
    algorithm-Dxjar.algorithm加密算法名称StringAES/CBC/PKCS5PaddingJDK内置加密算法, 如:AES/CBC/PKCS5Padding 和 DES/CBC/PKCS5Padding
    keySize-Dxjar.keySize密钥长度int128根据加密算法而定, 56, 128, 256
    ivSize-Dxjar.ivSize密钥向量长度int128根据加密算法而定, 128
    sourceDir-Dxjar.sourceDir源jar所在目录File${project.build.directory}文件目录
    sourceJar-Dxjar.sourceJar源jar名称String${project.build.finalName}.jar文件名称
    targetDir-Dxjar.targetDir目标jar存放目录File${project.build.directory}文件目录
    targetJar-Dxjar.targetJar目标jar名称String${project.build.finalName}.xjar文件名称
    includes-Dxjar.includes需要加密的资源路径表达式String[]io/xjar/** , mapper/*Mapper.xml , 支持Ant表达式
    excludes-Dxjar.excludes无需加密的资源路径表达式String[]static/** , META-INF/resources/** , 支持Ant表达式
    • 指定加密算法的时候密钥长度以及向量长度必须在算法可支持范围内, 具体加密算法的密钥及向量长度请自行百度或谷歌.
    • 当 includes 和 excludes 同时使用时即加密在includes的范围内且排除了excludes的资源.

    更多文档:xjar-maven-plugin

    版本记录

    • 4.0.0
      1. 加解密支持填充模式
      2. 加解密支持IV-Parameter
      3. 升级启动器
      4. 移除危险模式
      5. 拼写错误修正
      6. 提供智能加密/解密器 避免使用失误
      7. 删除多余的加密/解密方法
      8. 修复有安全校验的nested-lib在不加密其内部资源情况下启动时也无法通过校验的问题
      9. 去除命令启动和手输密码启动的方式只保留Go启动器的模式
      10. 增加可读性更强的Fluent风格的加密/解密API
    • 2.0.9
      1. 修复XJar类加载器加载的类没有 ProtectionDomain 以及 CodeSource 的问题
      2. 去除版本号前置的"v"
    • v2.0.7
      1. 修复不同字符集机器间加密与运行的问题
    • v2.0.6
      1. 解决多jar包启动时无法找到准确的MANIFEST.MF导致无法正常启动的问题
    • v2.0.5
      1. 升级LoadKit依赖版本
      2. 修复ANT表达式无法正确匹配**/*通配符的问题
    • v2.0.4
      1. 解决危险模式不支持ubuntu系统的问题
    • v2.0.3
      1. 过滤器泛型协变支持
      2. xjar-maven-plugin 支持 includes 与 excludes 同时起效, 当同时设置时即加密在includes范围内但又不在excludes范围内的资源
    • v2.0.2
      1. 原生jar增加密钥文件的启动方式, 解决类似 nohup 和 javaw 的后台启动方式无法通过控制台输入密码的问题
    • v2.0.1
      1. 增加密钥文件的启动方式, 解决类似 nohup 和 javaw 的后台启动方式无法通过控制台输入密码的问题
      2. 修复解密后没有删除危险模式中在MANIFEST.MF中保留的密钥信息
    • v2.0.0
      1. 支持内嵌JAR包资源的过滤加解密
      2. 不兼容v1.x.x的过滤器表达式, 统一采用相对于 classpath 资源URL的过滤表达式
    • v1.1.4
      1. 支持 Spring-Boot 以ZIP方式打包, 即依赖外部化方式启动.
      2. 修复无加密资源时无法启动问题
    • v1.1.3
      1. 实现危险模式加密启动, 即不需要输入密码!
      2. 修复无法使用 System.console(); 时用 new Scanner(System.in) 替代.
    • v1.1.2
      1. 避免用户由于过滤器使用不当造成无法启动的风险
    • v1.1.1
      1. 修复bug
    • v1.1.0
      1. 整理目录结构
      2. 增加正则表达式/Ant表达式过滤器和“非”(!)逻辑运算过滤器
      3. 将XEntryFilters工具类整合在XKit类中
      4. 缺省过滤器情况下Spring-Boot JAR包加密的资源只限定在 BOOT-INF/classes/ 下
    • v1.0.9
      1. 修复对Spring-Boot 版本依赖的bug
    • v1.0.8
      1. 支持以Maven插件方式集成
    • v1.0.7
      1. 将sprint-boot-loader依赖设为provide
      2. 将XEntryFilter#filter(E entry); 变更为XEntryFilter#filtrate(E entry);
      3. 将Encryptor/Decryptor的构造函数中接收多个过滤器参数变成接收一个, 外部提供XEntryFilters工具类来实现多过滤器混合成一个, 避免框架自身的逻辑限制了使用者的过滤逻辑实现.
    • v1.0.6
      1. 采用LoadKit作为资源加载工具
    • v1.0.5
      1. 支持并行类加载, 需要JDK1.7+的支持, 可提升多线程环境类加载的效率
      2. Spring-Boot JAR 包加解密增加一个安全过滤器, 避免无关资源被加密造成无法运行
      3. XBoot / XJar 工具类中增加多个按文件路径加解密的方法, 提升使用便捷性
    • v1.0.4 小优化
    • v1.0.3 增加Spring-Boot的FatJar加解密时的缺省过滤器, 避免由于没有提供过滤器时加密后的JAR包不能正常运行.
    • v1.0.2 修复中文及空格路径的问题
    • v1.0.1 升级detector框架
    • v1.0.0 第一个正式版发布

    协议声明

    Apache-2.0

    加入群聊

    QQ 950956093

    展开全文
  • Spring boot jar 后台运行

    万次阅读 2015-09-17 12:27:05
    部署spring boot jar到生产环境,可以在后台运行
    start(){
     now=`date "+%Y%m%d%H%M%S"`
     exec java -Xms256m -Xmx512m -jar /alidata/server/webapps/zooktrip.jar 5 >"$now"_bidcheck.log &
     #java -Xms128m -Xmx2048m -jar test2.jar 5 > log.log &  
     #tail -f result.log  
    }
    #停止方法  
    stop(){
     ps -ef|grep java|awk '{print $2}'|while read pid  
     do
        kill -9 $pid
     done
    }
    
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    stop
    start
    ;;
    *)
    printf 'Usage: %s {start|stop|restart}\n' "$prog"
    exit 1
    ;;
    esac

    展开全文
  • Spring Boot 入门:使用Maven插件把 Spring Boot 应用程序打成 jar 包运行 上一篇我们搭建了我们的第一个Spring Boot 应用程序,但是运行的方式是在IDEA中直接点击Run运行。 现在我们把 Spring Boot 应用程序打成 ...
  • spring boot 支持jar包运行jsp

    万次阅读 热门讨论 2016-08-10 09:39:57
     Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在...
  • Spring Boot JAR 安全加密运行工具,同时支持的原生JAR。 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。 功能特性 无需侵入代码,只需要把编译...
  • Spring boot jar包发布成服务

    千次阅读 2017-03-15 10:55:49
    Spring boot jar包发布成服务
  • Spring Bootjar包方式在后台运行

    千次阅读 2018-05-08 15:45:22
    使用 java -jar spring-boot01-1.0-SNAPSHOT.jar 命令,启动 jar 。 然后,在浏览器输入 http://124.232.163.150:9090/hello 就可以看到有 json 格式的数据返回。然而,上面的这种方式,只要控制台关闭,服务就...
  • 主要给大家介绍了关于Spring boot项目打包成jar运行的二种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • spring boot 版本1.5.9.RELEASE, spring cloud 版本Edgware.SR1。 在应用实际中发现spring-cloud-starter-feign与spring-cloud-starter-zuul依赖是不是 有冲突,实验如下: 1 spring-cloud-starter-zuul依赖在上,...
  • 对于Spring Boot导出的jar包程序,当远程服务器执行的时候,一旦关闭了当前终端,程序也被迫停止运行了。希望的是让它常驻后台执行,不受启动其终端关闭与否的影响。 方法 Linux系统可以使用 .. &amp; 或者 ...
  • 前面讲过spring-boot内置了应用服务器(如:tomcat),spring-boot项目的运行不在需要搭建外部tomcat环境,那么我们就可以将程序build成jar包直接运行,本文简单介绍如何build jar包
  • Gradle+bootJar打包SpringBoot工程并分离jar和配置文件

    千次阅读 热门讨论 2020-06-01 15:37:31
    Gradle+bootJar打包SpringBoot工程并分离jar和配置文件
  • spring boot快速开发时,通常用spring-boot-maven-plugin插件将springboot的应用程序打包成jar文件,然后通过java -jar运行,很方便。但是如果是部署到服务器上,每次更改代码后替换的都比较大,至少30MB以上,...
  • 不同的环境使用不同的配置文件,例如开发环境使用一个配置文件,测试环境使用另一个配置文件,生产环境再使用另一个配置文件,我们在运行spring boot项目打包的项目时则需要在启动jar包时通过命令行指定不同配置文件...
  • spring boot 入门例子, 打成jar包,直接运行.快速入门,学习spring bootspring boot 入门例子, 打成jar包,直接运行.快速入门,学习spring boot
  • Spring Bootjar 方式运行在后台

    万次阅读 2016-01-10 20:40:39
    Spring-boot jar 方式启动: 首先,为了防止和常用的 Tomcat 8080 端口冲突,将 Spring-boot 项目的端口号设置为 9090。 具体方法:在 application.properties 文件里写 server.port=9090。 使用 maven 命令:...
  • Spring Boot直接导出jar包发布运行

    千次阅读 2017-11-20 15:44:05
    第一步:从Eclipse中导出对应的可运行jar包 1:选中对应的java项目——右键——导出 2:选择导出java项目——可运行JAR文件   3:关键步骤 launch Configuration:选择主类运行文件(如果下拉框...
  • Spring Boot 直接用jar运行项目

    万次阅读 2018-02-05 13:17:58
    概述 ...还有另一中方式可以可以把Spring Boot程序运行起来,就是直接在命令行中执行jar包。 打成jar包 以往的WEB程序需要打成WAR,部署到Tomcat上,而Spring Boot支持打包成JAR的形式,就算是
  • 更新spring boot jar包中的lib目录下的jar包 场景:需要更新lib目录下某个jar包的配置文件 失败的解决方法:用解压软件依次打开spring boot jar包、lib目录下的jar包,然后修改配置文件后保存回jar包中,这样操作会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,524
精华内容 56,609
关键字:

bootjar包运行spring

spring 订阅