当前位置: 首页 > 知识库问答 >
问题:

如何理解spring boot中的可执行jar

齐阎宝
2023-03-14

我是Spring Boot的新手,我看到了Spring Boot。上面写着:

可执行JAR和Java

Java不提供任何加载嵌套jar文件的标准方法(即jar文件本身包含在jar中)。如果您希望分发一个自包含的应用程序,这可能会有问题。

为了解决这个问题,许多开发人员使用“优步”罐。优步罐只是简单地将所有罐中的所有类打包到一个存档中。这种方法的问题是很难看到你在应用程序中实际使用的库。如果在多个罐中使用相同的文件名(但内容不同),也可能会有问题。

Spring Boot采用了不同的方法,允许您直接嵌套罐子。

我想知道如果uber罐或胖罐有一些缺点,i.e.we必须重新部署整个uber罐,可能会遇到NoSuchmetodError的麻烦。Spring引导可执行罐与uber罐有什么不同。既然它有很多缺点,为什么Spring引导仍然使用这种类型的罐?

共有1个答案

万坚壁
2023-03-14

在Spring Boot中,你可以使用Spring Boot maven插件或Spring Boot gradle插件,它们会重新打包你的JAR和所有依赖项。这叫肥罐。这与uber JAR不同。

Spring Boot打包:JAR存档,其中包含JAR的依赖项。Uber JAR:JAR存档,其中包含所有依赖项的已编译类文件。

所以Spring Boot就像嵌入式tomcat的WAR。这样你就可以以JAR的形式执行它。这变成了托管云本地应用程序的最现代的方法。

理论上,如果您使用的是API不兼容版本的具有传递依赖关系,则可以获得NoSuchmetodError,但WAR打包也存在此问题。

 类似资料:
  • 各位工程师,大家好! 我在试图创建一个胖罐子来执行cucumber测试时遇到了一个问题。最初,我按照指南从Baeldung设置测试。当在Maven测试阶段执行时,测试运行良好。当运行带有参数的mvn exec:java命令时,它也能正常工作。 然而,当我创建了一个胖罐子并试图执行测试时,我面临着错误 以下是我的项目的解释,它基本上与Baeldung的测试项目完全一样。 项目结构 直接从可执行jar

  • 我有一个关于Java流和链式可完成期货如何执行的问题。 我的问题是:如果我运行下面的代码,调用,列表中有10个项目需要大约11秒才能完成(列表中的项目数加1)。这是因为我有两个线程并行工作:第一个执行操作,一旦完成,第二个执行操作,第一个开始处理列表中的下一个项目。 如果我注释掉第36行(),那么方法需要大约20秒才能完成。Thread不平行运行;对于列表中的每个项目,操作完成,然后在处理列表中的

  • 本文向大家介绍详解如何使用maven生成可以执行的jar,包括了详解如何使用maven生成可以执行的jar的使用技巧和注意事项,需要的朋友参考一下 不依赖任何外界包,maven如何生成可以执行的jar? pom中不包含任何引用的情况下,只需要在pom中添加 maven-jar-plugin即可。 解决过程 新建项目,仅包含一个main函数类:Xixi.java,输出 Xixi Say: hello

  • 我希望所有执行器endpoint(在文档中描述)都可用。在文档之后,添加了启动器启动器依赖项和属性,但大多数endpoint不可用(HTTP 404)。 唯一可用的endpoint是,但它显示无用的信息: 添加属性。 添加了依赖项: 获取/执行器的结果 启用执行器endpoint的最小设置是什么?

  • 我们什么时候应该使用Spring boot执行器。如果包括在内,它对应用程序内存和CPU使用有多大影响? 我目前正在使用Spring Boot 2. x。

  • 下面是我的pom.xml文件: