草庐IT

java - 运行 fatjar 时无法加载 log4j2

我正在从事一个使用log4j2日志记录的项目。在intellij中开发时,一切正常,日志记录按预期完成。log4j2.xml通过在启动时通过intellij设置传递给jvm的java属性进行链接。但是一旦我尝试运行一个独立的gradle构建的fat-jar,我遇到了以下问题:java-Dlog4j.debug=true-Dlog4j.configurationFile=/home/aaa/log4j2.xml-jar/home/aaa/myjar-SNAPSHOT.jar异常(exception):ERRORStatusLoggerUnrecognizedformatspecifier

浅析 SpringBoot FatJar 机制的设计与实现

一、概述SpringBootFatJar的设计,打破了标准jar的结构,在jar包内携带了其所依赖的jar包,通过在标准jar包中指定的 Main-Class 的main方法启动后,创建自己的类加载器,来识别、加载、运行其非规范的目录下的代码(BOOT-INF/classes/...)和依赖(BOOT-INF/lib/...)。BOOT-INF/classes/ 目录下有SpringBoot上下文的启动类的class文件,自定义类加载器加载这个启动类后,开始进入SpringBoot的上下文中运行我们所写的程序代码。执行的流程可概括为:通过 java-jar xxx.jar 启动应用执行xxx.

java - eclipse Java;导出 jar,包括引用的库,没有 fatjar

我需要从我的EclipseJava项目中导出jar,并且我想包含引用的库。我不能为此使用fatjar,这似乎是每个人都推荐的。必须有另一种方法来做到这一点。有谁知道这是什么?! 最佳答案 Eclipse的下一个版本(3.5,将于明年6月发布)可以选择包含所有必要的jar。它是在3.5M5中引入的(感谢basszero)。或者您可以尝试使用Maven2构建您的项目.然后,您可以使用mvnassembly:assembly构建一个“胖”jar。.另一种选择是使用ant.将所有JAR文件解压到一个临时目录中,然后再次jar起来。

java - eclipse Java;导出 jar,包括引用的库,没有 fatjar

我需要从我的EclipseJava项目中导出jar,并且我想包含引用的库。我不能为此使用fatjar,这似乎是每个人都推荐的。必须有另一种方法来做到这一点。有谁知道这是什么?! 最佳答案 Eclipse的下一个版本(3.5,将于明年6月发布)可以选择包含所有必要的jar。它是在3.5M5中引入的(感谢basszero)。或者您可以尝试使用Maven2构建您的项目.然后,您可以使用mvnassembly:assembly构建一个“胖”jar。.另一种选择是使用ant.将所有JAR文件解压到一个临时目录中,然后再次jar起来。

java - 如何使用带有实现依赖项的 Gradle 创建可执行的胖 JAR?

我在Gradle4.6中有一个简单的项目,并且想制作一个可执行的JAR。我试过shadow、gradle-fatjar-plugin、gradle-one-jar、spring-boot-gradle-plugin插件,但它们都没有添加我声明为implementation的依赖项(我没有任何compile)。它适用于compile例如对于gradle-one-jar插件,但我想拥有implementation依赖项。 最佳答案 您可以使用以下代码。jar{manifest{attributes('Main-Class':'com.p

java - 如何使用带有实现依赖项的 Gradle 创建可执行的胖 JAR?

我在Gradle4.6中有一个简单的项目,并且想制作一个可执行的JAR。我试过shadow、gradle-fatjar-plugin、gradle-one-jar、spring-boot-gradle-plugin插件,但它们都没有添加我声明为implementation的依赖项(我没有任何compile)。它适用于compile例如对于gradle-one-jar插件,但我想拥有implementation依赖项。 最佳答案 您可以使用以下代码。jar{manifest{attributes('Main-Class':'com.p

jar - 在 gradle.build 中使用 fatjar 插件时如何指定主类

我有兴趣在单个可执行jar文件中构建一个包含所有模块依赖项和外部jar的单个jar,我将能够使用java-jarmyApp.jar运行它。我有依赖于模块B的模块A。目前我正在使用gradle,我的build.gradle脚本如下所示:applyplugin:'fatjar'description="A_Project"dependencies{compileproject(':B_Project')compile"com.someExternalDependency::3.0"}当我通过gradle命令构建它时:cleanbuildfatjar按预期创建一个fatjar'A.jar'。

java - Gradle 中的 uberJar、fatJar 和 shadowJar 有什么区别?

我试图了解什么时候应该使用哪个。我知道它们都组装了所有依赖类,但是它们之间有什么不同呢? 最佳答案 这些术语有时可以互换使用,但通常指的是:Fatjar(也称为Uberjar)-用于描述一个jar,该jar中的所有依赖jar中的类都直接压缩在正确的目录结构中,而不是在其他jar里。有很好的解释here.Shadedjar(或shadedclasses)——通常是指改变classes字节码以改变classes的包名的过程,并且也修改它在jar中的使用。它用于将类链接到其他类的特定版本并避免版本冲突。它可以由MavenShadePlug

java - Gradle 中的 uberJar、fatJar 和 shadowJar 有什么区别?

我试图了解什么时候应该使用哪个。我知道它们都组装了所有依赖类,但是它们之间有什么不同呢? 最佳答案 这些术语有时可以互换使用,但通常指的是:Fatjar(也称为Uberjar)-用于描述一个jar,该jar中的所有依赖jar中的类都直接压缩在正确的目录结构中,而不是在其他jar里。有很好的解释here.Shadedjar(或shadedclasses)——通常是指改变classes字节码以改变classes的包名的过程,并且也修改它在jar中的使用。它用于将类链接到其他类的特定版本并避免版本冲突。它可以由MavenShadePlug
12