转载:http://blog.sina.com.cn/s/blog_cfee55a70102yvyd.html
A项目依赖B项目,B项目中存在@service等注解,在本地eclipse中运行A项目时可以正常扫描B项目的注解创建对象。
但经过打包后,B项目和A项目的目录结构变成
+BOOT-INF
+classes
+lib
+META-INF
+org.springframework.boot.loader
B项目本身又作为A项目BOOT-INF/lib下的jar包,A项目使用java -jar从入口启动类启动后无法扫描到B项目的注解,
且B项目中的lib也与A项目中的lib下jar包存在重复。
解决方法,在B项目的pom.xml文件中添加<classifier>exec</classifier>
这样B项目编译后target目录下会产生两个文件
B.jar B-exec.jar
其中B-exec.jar和之前的结构一样
B.jar的目录结构是非springboot编译项目,只有B项目自身的文件
+META-INF
+com.B项目包名
配置文件....
这样再对A项目打包后,A项目BOOT-INF/lib目录下只会加入B.jar,实测启动可以正常扫描到B项目中的注解
如果需要单独执行B项目,只需执行B-exec.jar即可
相关推荐
通过上述方法,我们可以有效地解决Spring Boot项目编译后无法扫描子JAR包中注解的问题。这种方法不仅能够简化主项目的依赖关系,还能避免重复依赖带来的冲突问题。对于那些希望优化多模块Spring Boot项目构建流程的...
然而,当Bean定义在独立的jar包中,有时Spring可能无法正确扫描并加载这些Bean。这种情况通常发生在将公共模块打包成jar,并在其他项目中作为依赖引入时。本文将深入探讨这个问题,并提供解决方案。 首先,我们需要...
### Springboot 打Jar包,Maven完美解决本地Jar包自动打入Springboot Jar包中 #### 背景介绍 随着微服务架构的流行,Spring Boot 成为了开发微服务应用时首选的技术栈之一。它简化了传统的Java Web应用程序的开发...
`ClassUtil.java`可能包含了一些辅助方法,用于在运行时编译修改后的Java源码,然后由类加载器加载到JVM中。Java的`javac`工具或第三方库如Apache Ant或Maven的Compiler插件可以用于此目的。 **自动引用依赖**:在...
在Spring MVC项目中,加载jar包中的Spring配置文件是一个常见的需求,特别是在进行SSM(Spring、Spring MVC、MyBatis)整合时。SSM框架的整合通常涉及到多个配置文件的组织和管理,其中一部分配置可能会被打包到独立...
综上所述,"加载jar包中的spring配置文件"是一个关键的Java开发实践,它涉及到Spring框架的配置管理、类路径的概念,以及如何在多模块项目中有效地组织和使用配置。正确理解和使用这些技术,能帮助开发者构建可扩展...
字节码加密是另一种增强安全性的手段,它涉及到对编译后的.class文件进行加密,使得即使字节码被提取出来,也无法直接反编译为源代码。工具如JBCO可以在运行时动态解密加密的字节码,但这种操作可能会对程序性能...
此外,如果你需要频繁地从JAR中读取资源,可以考虑使用`Class.getResourceAsStream()`或`ClassLoader.getResourceAsStream()`方法,它们允许你通过类路径(相对于类或类加载器)访问资源,而无需显式打开`JarFile`。...
解决SpringBoot整合Mybatis扫描不到Mapper的问题 SpringBoot是一款流行的Java框架,Mybatis是Java Persistence层的优秀解决方案。当我们将SpringBoot和Mybatis整合时,可能会出现Mapper扫描不到的问题,这篇文章将...
在开发SpringBoot微服务时,开发人员小明遇到了一个问题,即在本地开发环境中能够正常读取资源文件,如word文档或模板,但当项目被打包成jar并部署到服务器后,程序无法找到这些文件,导致运行时异常。这个问题在...
动态加载jar包是一种在程序运行时按需引入外部库或者组件的技术,这使得应用程序更加灵活,可以适应不同的环境和需求。这种技术广泛应用于插件系统、框架开发以及服务升级等场景,因为它允许程序在不重启的情况下...
在将 Java 项目打包成可执行的 Jar 文件后,可以使用以下命令执行 Jar 包中的 main 方法: java -jar [jar 文件名] 其中,[jar 文件名] 是要执行的 Jar 文件的名称。 例如,要执行名为 "helloworld.jar" 的 Jar ...
1. 使用`Class.forName()`或`ClassLoader.loadClass()`:通过这两个方法可以指定`jar`包中的类路径,让类加载器找到并加载类。例如,`ClassLoader.loadClass("com.example.MyClass", true)`,其中第一个参数是类全名...
寻找指定路径下jar包中含特定字符串的文件
"thin"打包方式是SpringBoot提供的一种优化策略,它的核心思想是将应用程序的类和配置打包到一个JAR中,但不包含任何依赖库。当启动这个JAR时,它会自动从远程仓库下载缺失的依赖。这样,我们就可以创建一个体积小的...
基于接口、抽象类实现不停机动态调整代码的目的,将修改后的源码文件放置于指定目录下,读取文件后执行动态编译方法,即可将该类重新加载,新的类可以在Spring容器从新注册,且仅在当前窗口生效。如果重启了服务或...
当一个项目被打包成jar文件后,这通常意味着它可以作为一个独立的应用程序运行。然而,随着项目的部署和分发,保护源代码和敏感信息的安全变得至关重要。"springboot工程jar包加密"这个话题就是关于如何确保Spring ...
NULL 博文链接:https://xinglu.iteye.com/blog/1457029
在Java开发中,将资源文件打包到JAR(Java Archive)包中是常见的做法,这样可以方便地分发和执行程序。然而,加载这些资源文件可能会遇到一些问题,特别是当资源文件位于类路径(classpath)的深层目录结构中时。本...
在本文中,我们将深入探讨如何使用Nginx部署Spring Boot应用程序,特别关注jar包的部署。首先,让我们从创建和上传jar包开始。 1. **创建jar包**: 使用Maven作为构建工具,你可以通过运行`mvn clean install`命令...