问题标签 [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.
gradle - 如何从 java TestRunner 类运行黄瓜测试
结果:
如何从 Java 文件中运行相同的测试:例如
src/main/java/calc/TestRunner.java
这样当我做 java -jar build/distributions/cucumber-jvm-groovy-example.jar
我应该得到与使用 gradle 通过命令行运行测试时相同的结果
我使用了以下 Java 类:
但有例外:
这让我认为 JUnitCore.main() 需要一个类名作为参数
maven - 在包含所有依赖项的 uber Jar 之外的 Jar 文件中提交 spark 应用程序
我正在构建具有多个严重依赖项的 Spark 应用程序(例如,具有语言模型的斯坦福 NLP),因此包含具有依赖项的应用程序代码的 uber Jar 需要大约 500MB。将这个胖 Jar 上传到我的测试集群需要很多时间,我决定将我的应用程序和依赖项构建到单独的 Jar 文件中。
我在我的父 pom.xml 中创建了两个模块,mvn package
并mvn 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 文件?
packaging - 如何在锡兰创建一个 uber jar
我有一个锡兰项目。我想将它分发到一个包含所有依赖项的 uber jar 中,以便可以通过简单的方式执行它
这在锡兰可行吗?
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 配置创建和运行应用程序时,一切运行良好:
一切都加载了,服务器按预期启动,所有功能都正常工作,等等。
另一方面,如果我执行mvn clean install
orpackage
也可以正常构建,但是当我运行 时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 就在那里,与其他依赖项没有什么不同:
更新:这是堆栈跟踪
非常感谢任何见解!
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 中的非托管依赖项的方法?
heroku - 如何在 Heroku 的 Clojure buildpack 中配置 build 命令?
Heroku 正在lein uberjar
运行以构建我的 Clojure 应用程序,但我需要它来运行lein ring uberjar
. 可以在不分叉 buildpack 的情况下进行配置吗?
我尝试将 Web 进程设置为仅用于lein ring server-headless
启动,而不是独立 jar,但是在安装依赖项时出现启动超时。
python - 相当于 uber-jar 的 Python
我正在寻找与 python 世界中的 uber-jar 相当的东西。
- 我需要将 python 包分发到所有三个主要平台(Windows、Mac、Linux)。
- 它必须与其所有依赖项捆绑在一起,因为目标平台可能缺乏互联网。
它必须是一个跨平台的发行版,所以我不必为多个目标构建。也就是说,我应该能够在这样的所有平台上运行它:
python package.ext
您可以假设该包是纯 python(没有本机代码)。 有什么东西可以满足这些要求吗?
我知道以下选项,每个选项都有缺陷:
.whl
软件包需要pip
安装。- 我不知道如何创建一个
.egg
包含所有包依赖项。 - 此 PEP: http: //legacy.python.org/dev/peps/pep-0441表明 python 支持运行
.zip
文件,但 AFAICT,创建此类 zip 的最佳工具是 pex(https://github.com/pantsbuild /pex ),我认为它不支持 Windows
maven - AEM 6.1 Uber Jar Maven 依赖项
我使用AEM 6.1
withMaven
作为构建管理器。我已经使用 Adobe 提供的未混淆的内容更新了 .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
:
maven - boot-clj:在 maven 存储库中安装 uberjar
有没有办法将 uberjar 安装到本地 maven 存储库中?
它通常是存储它们的好地方,还是将 uberjar 构建保存在单独的目录中更好?我的意思是,我在想 og 为本地存储库中的每个版本都有一个 uberjar 和一个常规 jar,但我不确定这一点。
无论如何,以下会产生错误: