问题标签 [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.

0 投票
2 回答
2654 浏览

gradle - 如何从 java TestRunner 类运行黄瓜测试

使用cucumber-groovy-example

结果:

如何从 Java 文件中运行相同的测试:例如

src/main/java/calc/TestRunner.java

这样当我做 java -jar build/distributions/cucumber-jvm-groovy-example.jar

我应该得到与使用 gradle 通过命令行运行测试时相同的结果

我使用了以下 Java 类:

但有例外:

这让我认为 JUnitCore.main() 需要一个类名作为参数

0 投票
1 回答
718 浏览

maven - 在包含所有依赖项的 uber Jar 之外的 Jar 文件中提交 spark 应用程序

我正在构建具有多个严重依赖项的 Spark 应用程序(例如,具有语言模型的斯坦福 NLP),因此包含具有依赖项的应用程序代码的 uber Jar 需要大约 500MB。将这个胖 Jar 上传到我的测试集群需要很多时间,我决定将我的应用程序和依赖项构建到单独的 Jar 文件中。

我在我的父 pom.xml 中创建了两个模块,mvn packagemvn assembly:asembly分别使用 和 构建应用程序和 uber jar。

但是,在我将这些单独的 jar 上传到我的 YARN 集群应用程序后,应用程序失败并出现以下错误:

线程“main”中的异常 java.lang.NoSuchMethodError: org.apache.hadoop.net.unix.DomainSocketWatcher.(I)V at org.apache.hadoop.hdfs.shortcircuit.DfsClientShmManager.(DfsClientShmManager.java:415) at org .apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.(ShortCircuitCache.java:379) 在 org.apache.hadoop.hdfs.ClientContext.(ClientContext.java:100) 在 org.apache.hadoop.hdfs.ClientContext.get(ClientContext .java:151) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:690) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:601) 在 org.apache.hadoop.hdfs。 DistributedFileSystem.initialize(DistributedFileSystem.java:148) at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2653) at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:92)

在 Spark 上运行应用程序时,它也会失败并出现类似错误。

带有依赖项的 Jar 包含在 Yarn 类路径中:

真的有可能以这种方式运行 Spark 应用程序吗?或者我必须将 YARN(或 Spark)类路径上的所有依赖项作为单独的 Jar 文件?

0 投票
2 回答
69 浏览

packaging - 如何在锡兰创建一个 uber jar

我有一个锡兰项目。我想将它分发到一个包含所有依赖项的 uber jar 中,以便可以通过简单的方式执行它

这在锡兰可行吗?

0 投票
1 回答
1509 浏览

java - Spring Boot fat jar 中的 NoClassDefFoundError 但依赖项位于已编译的存档中,并且应用程序在 IDE 中运行良好

更新:已解决

出于某种原因,我用来加载我的自定义类的类加载器 extendsGenModel没有已经加载的类的上下文,这是我没有预料到的。因此,即使GenModel是从我的调试角度加载的,它也不是从我modelLoader的角度加载的。

解决方案URLClassLoader可以将实例交给父上下文。由于不确切知道要处理哪个上下文,我只是检索了GenModel我知道已经加载的类的上下文,认为该上下文显然包含GenModel. 所以,最后我只改了一行代码:

变成了

这解决了它!

向@EvilToad 大声喊叫,他的评论让我走上了正轨!

原始问题:

我正在构建一个原型,将编译后的 h2o 神经网络模型实现为 Web 服务,并在运行时注入模型。该应用程序在 Spring Boot 嵌入式 Tomcat 服务器中运行,并且是一个 Maven 项目。我在 Maven POM 中有以下依赖项:

此依赖项包括类hex.genmodel.GenModel。当应用程序启动时,它使用 a 加载自定义模型类URLClassLoader并将其转换为GenModel. 相关代码如下:

...

这是我的POM:

当我使用以下 IntelliJ 配置创建和运行应用程序时,一切运行良好:

IntelliJ 运行配置

一切都加载了,服务器按预期启动,所有功能都正常工作,等等。

另一方面,如果我执行mvn clean installorpackage也可以正常构建,但是当我运行 时java -jar <myjarartifact>,应用程序会抛出异常:

...Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.----.research.machinelearning.neuralnets.NeuralNetPredictor]: Factory method 'neuralNetPredictor' threw exception; nested exception is java.lang.NoClassDefFoundError: hex/genmodel/GenModel

...Caused by: java.lang.NoClassDefFoundError: hex/genmodel/GenModel

...Caused by: java.lang.ClassNotFoundException: hex.genmodel.GenModel

这是让我失望的部分:当我查看 spring boot 生成的 fat jar 时,hex.genmodel.GenModel 就在那里,与其他依赖项没有什么不同:

胖 jar 依赖项中的 GenModel 类

更新:这是堆栈跟踪

非常感谢任何见解!

0 投票
1 回答
178 浏览

scala - 不包括 sbt for Play 中的 Uber (fat) jar!在斯卡拉

我有一个项目,我必须为一些专有硬件包含一个 fat-jar - 不要问,我知道 jar 最好放在 Central 或其他一些 repo 上,但事实并非如此。:( 我必须将它放在 lib 目录中,以便 sbt 将其视为非托管依赖项。

但是 jar 包含 slf4j,它的旧版本,并且当播放!运行它会抛出一个错误,抱怨缺少一个静态函数(这是在较新版本的 slf4j 中添加的)。

这是我尝试过的。

  • 我尝试使用 force() 添加 libraryDependency。没有骰子。
  • 我已经尝试了几个我在这里找到的 excludeAll 样本。没有骰子。
  • 出于绝望,我解压缩了 jar,删除了 slf4j,然后再次创建了 jar。它有效!但说真的,这不是我维护项目的首选。

有谁知道在基于 sbt 的 scala 或 play 项目中排除 Uber jar 中的非托管依赖项的方法?

0 投票
1 回答
120 浏览

heroku - 如何在 Heroku 的 Clojure buildpack 中配置 build 命令?

Heroku 正在lein uberjar运行以构建我的 Clojure 应用程序,但我需要它来运行lein ring uberjar. 可以在不分叉 buildpack 的情况下进行配置吗?

我尝试将 Web 进程设置为仅用于lein ring server-headless启动,而不是独立 jar,但是在安装依赖项时出现启动超时。

0 投票
1 回答
1171 浏览

python - 相当于 uber-jar 的 Python

我正在寻找与 python 世界中的 uber-jar 相当的东西。

  • 我需要将 python 包分发到所有三个主要平台(Windows、Mac、Linux)。
  • 它必须与其所有依赖项捆绑在一起,因为目标平台可能缺乏互联网。
  • 它必须是一个跨平台的发行版,所以我不必为多个目标构建。也就是说,我应该能够在这样的所有平台上运行它:

    python package.ext

您可以假设该包是纯 python(没有本机代码)。 有什么东西可以满足这些要求吗?

我知道以下选项,每个选项都有缺陷:

0 投票
2 回答
1131 浏览

maven - AEM 6.1 Uber Jar Maven 依赖项

我使用AEM 6.1withMaven作为构建管理器。我已经使用 Adob​​e 提供的未混淆的内容更新了 .m2 本地文件夹UberJar。我收到以下错误:

错误[JobHandler: /etc/workflow/instances/server0/2016-07-15/model_157685507700064:/content/myApp/testing/wf_test01] com.adobe.granite.workflow.core.job.JobHandler 找不到进程实现:com.myApp .workflow.ActivatemyAppPageProcess com.adobe.granite.workflow.WorkflowException:找不到流程实现:com.myApp.workflow.ActivatemyAppPageProcess 在 com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:197) 在com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:232) 在 org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:512) 在 org. apache.sling.event.impl.jobs.queues.JobRunner.run(JobRunner.java:205) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util。concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

UberJar好像没有包com.adobe.granite.workflow.core.job。有没有办法解决这个问题?

.execute工艺步骤的方法ActivatemyAppPageProcess

0 投票
1 回答
2787 浏览

apache-spark - 在 Spark 2.0.0 中我们还需要制作一个胖罐子来提交作业吗?

在 Spark 2.0.0 的发行说明中,它说:

Spark 2.0 不再需要一个胖汇编 jar 来进行生产部署。

  • 这是否意味着我们不再需要制作一个胖罐子来提交作业了?

  • 如果是,如何?因此这里的文档不是最新的。

0 投票
0 回答
116 浏览

maven - boot-clj:在 maven 存储库中安装 uberjar

有没有办法将 uberjar 安装到本地 maven 存储库中?

它通常是存储它们的好地方,还是将 uberjar 构建保存在单独的目录中更好?我的意思是,我在想 og 为本地存储库中的每个版本都有一个 uberjar 和一个常规 jar,但我不确定这一点。

无论如何,以下会产生错误: