问题标签 [uberjar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 脂肪罐的动态负载
使用 one-jar 或 sbt-assembly 之类的东西,从 fat jar 动态加载类的正确方法是什么?单罐示例:
这适用于我的包制作 jar,但如果我通过一个 jar 或程序集创建它,它会出现 java.lang.ClassNotFoundException
异常。我是否需要自定义类加载器(如果需要,它在哪里?)或者类或包名称是否需要特殊语法?
谢谢!
-格雷格
(Scala 中的示例,但对 Java 示例非常满意!)
clojure - 用 lein ring 构建的 uberjar 无法查看配置文件环境变量
在我的 Leiningen project.clj 中,我使用environ在不同的配置文件中设置环境变量。我想用 lein-ring 构建一个演示 uberjar,它对某些环境变量使用与生产版本不同的值。但是,出于某种原因,我似乎无法接听它们。
我demo
在我的 project.clj 中有一个类似这样的配置文件:
然后我执行
environ.core/env
但是在这两种情况下,在生成的独立 jar中访问 foo 或 bar都会返回nil
。另一方面,如果我跑
我可以访问两者的值。
为什么会这样?这真的不是我所期望的。看起来 uberjar 总是使用生产配置文件创建的。还是有别的事情发生?
lein -ring页面确实说明了以下内容:
Lein-Ring 关注几个环境变量,包括: PORT - 网络服务器用于 HTTP 的端口 SSLPORT - 网络服务器用于 HTTPS 的端口
这些将覆盖 project.clj 文件中指定的任何选项,但不会覆盖命令行中指定的任何选项。
但是,不清楚这是否意味着 project.clj 中指定的任何其他环境变量都将被忽略。
在 Windows 上运行 leiningen 2.3.4。
java - 如何获取嵌套 Jar 中的类路径资源列表?
我有一个 Maven 项目,我正在使用 One-Jar Maven 插件将其打包为单个胖 jar。根据One-Jar 站点上的此页面,必须使用 One-Jar 打包应用程序以特殊方式进行资源加载,但是该文档并未涵盖如何以不依赖于其自定义类加载器的方式列出资源.
我的问题是:如何以与包装无关的方式在内部 jar 中列出类路径的根目录的内容,这意味着不假设它总是在这种特殊的包装中?正如这个 SO question中所涵盖的,SpringPathMatchingResourcePatternResolver
将不起作用,因为 SpringDefaultResourceLoader
忽略了类加载器。
注意:我能找到的最接近的 SO 问题是这个问题,但这并没有解决嵌套 jar 中的类路径资源列表。
neo4j - Embedded Jetty 无法访问 Spring Boot uber-jar 中 jar 中的静态 Web 内容
我正在运行一个带有底层 Neo4j 数据库的 Spring Boot Web 应用程序。为了能够查看 Neo4j 浏览器(直接 web 查看到 db),Neo4j web 服务器使用以下配置嵌入到应用程序中。
并通过在 maven pom 中包含以下内容:
从 STS(即未打包)运行时,这一切都很好。
当我使用spring-boot-maven-plugin
. 这将创建正确包含 uber-jarneo4j-server-2.0.2-static-web.jar
的 /lib 文件夹中的文件的 uber-jar。
当我直接使用 uber-jar 文件运行应用程序,然后尝试点击http://localhost:7474/browser/
Neo4j 浏览器的 URL 时,它返回 404。
原因是 JettyDefaultServlet
尝试getResource()
从WebAppContext
which 调用JarFileResource.exists()
which 尝试操作以下 URL 字符串:
Jetty 无法匹配其资源列表中的任何内容,因为它正在寻找称为/lib/neo4j-browser-2.0.2.jar!/browser/
代码的资源,例如http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty- util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java#n123(和其他几个地方)正在寻找!/
字符串中的第一个。
我将为此提交一个 Jetty 错误,并提出他们String.lastIndexOf("!/")
在代码中使用的建议,这将解决问题。
与此同时,除了生产我们的标准 maven 程序集之外,有没有人对我如何让它在 Spring Boot uber-jar 中工作有任何建议?
非常感谢。
jar - 在 gradle.build 中使用 fatjar 插件时如何指定主类
我有兴趣在一个可执行的 jar 文件中构建一个包含所有模块依赖项和外部 jar 的单个 jar,我将能够使用java -jar myApp.jar
.
我有依赖于模块 B 的模块 A。目前我正在使用 gradle,我的build.gradle
脚本如下所示:
当我通过 gradle 命令构建它时:clean build fatjar
按预期创建了一个胖 jar 'A.jar'。但是按照我上面写的那样运行它会导致:
no main manifest attribute, in A.jar
如何修改我的build.gradle
文件并指定主类或清单?
gradle - 具有冲突依赖项的 Gradle shadow jar
我正在考虑为我的服务创建 uber jar 的想法,但我担心包含具有冲突依赖项的 jar。当 jar A 依赖 slf4j-1.0 而 jar B 依赖 slf4j-2.0 并且 1.0 和 2.0 之间有重大变化时会发生什么?当这些 jar 都包含在 uber jar 中时,我是否必须按命名空间编写特定的过滤器,或者在命名 jar 的影子进程中是否发生了某些事情?
谢谢您的帮助
maven - 在预先存在的 uber jar 上运行 mvn shade
我有一个已经生成的 uber jar(不是通过 Maven;我只有 jar)。我需要将它与另一个存在依赖冲突的 jar 一起使用。我想遮蔽第一个 uber jar 中的所有库,除了一些需要公开的类。
获取现有 jar 并使用 Maven shade 插件重命名其类的大部分(白名单除外),生成一个新的 uber jar 的设置是什么?
java - maven-shade-plugin 不包含 uber jar 中其他模块的依赖项
我的问题摘要:在多模块项目中,其中一个模块依赖于另一个模块。使用 构建此模块的 uber jar 时maven-shade-plugin
,正确包含其所有依赖项,但不包含其他模块的依赖项。
我有一个多模块项目,具有以下架构:
module_2
依赖于module_1
,在其 pom.xml 中声明:
我想构建一个 uber jar module_2
,并使用maven-shade-plugin
, 声明如下:
这会产生一个 uber jar:
- 包括所有依赖
module_2
- 包括罐子
module_1
- 不包括依赖项
module_1
有没有办法指定包括所有依赖项module_1
?
我发现的一个解决方案是使用maven-shade-plugin
来构建一个超级罐子module_1
。由于这个 jar 包含在 的 uber jar 中module_2
,因此它可以工作。但我想避免这种解决方案,以便能够发布一个简单的 jar 文件module_1
,不包括它的依赖项。
而且我想使用maven-shade-plugin
而不是maven-assembly-plugin
(为了更好地控制最终jar中包含的文件)
遵循@user2321368 的更多详细信息请求
maven 版本:Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)
module_1 的 pom.xml,我在其中包含了它的依赖项:(范围和版本在依赖项管理部分的父 pom 中声明)
javafx - 从 USB 运行 java 应用程序
我正在尝试构建一个跨平台(vista、xp、mac、Linux)。我需要将应用程序放在格式化为 FAT-32 的 USB 驱动器中,它应该可以在任何操作系统计算机上运行。计划使用 Java/JavaFx 来做。
任何建议我们如何在多个平台上运行。
嗨,任何人都可以建议使用 uber-jar 来满足上述要求。会不会很合适。
java - 尝试运行包含依赖项的可执行 jar 时出现 UnsatisfiedLinkError
我的 Java 项目有许多依赖项,例如,Box2d
我在我的 中定义
了以下 s 列表,因此使用 Maven 来管理项目。
注意:我在底部列出了依赖项,但不包括在此处。OpenGl
OpenAl
plugin
pom.xml
pom.xml
我按照这个文档开始:http ://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html
当我运行时mvn package
,jar
会创建 a ,即target/test-0.1.jar
它实际上包含所有jar
依赖项,并在包的根目录中包含本机.so
和库。.dll
但是当我尝试从 CLI 运行应用程序时,我得到了UnsatisfiedLinkError
异常。
我错过了什么pom
吗?