问题标签 [onejar]

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 投票
1 回答
174 浏览

jar - OneJar Expand with (or without) sbt-onejar

Is there a way to tell the sbt-onejar SBT plugin to produce a JAR in such way that the .class files of my project are in "expanded" form and not under lib/myproject.jar?

Alternatively, is it possible to tell sbt-onejar to produce a JAR that, when it's loaded, it actually unpacks/expands the nested JARs into a temporary folder and loads them from there, so that things like getResource(...) return paths to physical files as opposed to jar:file:... URLs?

Alternativel, I'd also happy with any vanilla OneJar solutions that help me produce a fat JAR wherein my own .class files would be directly under the fat JAR as opposed to under lib/myproject.jar.

I'm asking because Jetty does not seem to be able to load JSP files from inside of nested JAR files. There does seem to be a workaround by using a custom resource loader (see http://dev.eclipse.org/mhonarc/lists/jetty-users/msg01174.html for a report of the same problem and the workaround) but I don't seem to be able to get my servlets to actually use the overridden getResource method provided in the workaround.

0 投票
2 回答
15062 浏览

java - 为什么 ClassLoader.getResourceAsStream() 会返回 null?

故意破坏以下代码以识别 NullPointerException 的来源,这本来应该非常简单,但结果让我抓狂:

我得到“找不到属性文件!” 错误,即 contextClassLoader.getResourceAsStream("resource.properties"); 返回 null

这是一个基于 CXF 的客户端,我验证了“resource.properties”文件位于客户端 jar 所在(并运行)的当前目录中。

我还通过包含以下诊断代码验证了绝对路径:

绝对路径指向客户端的 jar 所在的位置。

我还尝试使用以下方法找出类加载器的上下文:

但是这里展示了一些目录结构,我得到的只是:

com.simontuffs.onejar.JarClassLoader@1decdec

为什么 ClassLoader.getResourceAsStream() 会返回 null?

我错过了什么?

0 投票
1 回答
5709 浏览

java - 如何真正完全地从 jar 中排除一个包?

在我的pom.xml中有这个依赖项部分:

我希望geronimo-javamail_1.4_spec包从构建中排除,实际上,当我运行时mvn dependency:tree,它不再列在那里。

但是,在运行生成的 jar 时,JarClassLoader 仍然抱怨 javax/mail 类被 geronimo 隐藏了...

果然,当我通过 7-zip 检查 jar 时,我看到 geronimo-javamail_1.4_spec-1.7.1.jar 仍然存在(作为 org.apache.cxf:cxf-api:jar:2.7 的一部分出现。 1:编译包)。

如何完全排除包裹?即不仅将其从依赖关系树中删除,而且根本不将其包含在生成的 jar 中?


根据以下评论添加 onejar 相关的 xml:


在根据以下答案指定范围和调试选项后添加 mvn 依赖项的输出:

0 投票
1 回答
633 浏览

java - Onejar 和资源加载

我有一个 maven 项目,我想将它打包到一个可执行的 jar 中。它使用了很多依赖项,例如 spring 等。在一些帖子中建议使用 OneJar,以避免很多麻烦。这是我目前在 pom.xml 中的内容:

在我的 Spring 配置中,其中一个类需要将资源 ( src/main/resources/coolfile.bin) 路径传递给外部库 (jsch) 方法:

当我Application.java从 IDE (eclipse) 运行时,整个应用程序加载成功。

虽然当我运行时mvn clean install,onejar jar 是在该target文件夹下构建的,但是当我尝试运行它时java -jar coolproject.one-jar.jar会显示以下错误:

如果我检查coolproject.one-jar.jar,我可以coolproject.jar在文件夹下找到main,如果我检查,我可以coolfile.bin在它的根目录中看到。

所以理论上应该找到资源?我错过了什么?

0 投票
1 回答
74 浏览

scala - 使用 Socko Web 服务器时,RestRegistry 中的 my/package 没有资源

我正在使用 socko 的 restful api。当我通过 运行我的应用程序时sbt run,可以毫无问题地运行。但是,当我通过 打包我的应用程序one-jar并运行它java -jar myapp_2.10-1.0-onejar.jar时,会发生运行时错误。所以我想知道jar文件和我的应用程序有什么问题。谢谢你。

以下是我的sbt about结果:

以下是运行时错误消息:

以下是 的部分结果jar -tf myapp_2.10-1.0.jar,其中myapp_2.10-1.0.jarmyapp_2.10-1.0-onejar.jar生成one-jar

0 投票
2 回答
1723 浏览

java - 从嵌套 JAR 加载 Velocity 模板

我有一个打包在 onejar 中的应用程序,它使用 Velocity 进行模板化。

在我的 Maven 项目设置中,我有一个$base/src/main/resources/template.html. 当应用程序被打包为 onejar 时,生成的 onejar 在其中包含一个嵌套的 jar(在 main/my-jar.jar 下)。该 jar 又将该template.html文件打包在其根目录下。(显然 maven 将其从 src/main/resources 复制到包的根目录中)

我想将该模板加载为 Velocity 中的资源。我读过我需要使用 ClassPathResourceLoader 来做到这一点,所以我的代码如下所示:

每次都失败,除了 Velocity 的资源加载器都找不到该文件。

我有两个问题 - 首先,这甚至是配置 ClasspathResourceLoader 使用的正确方法吗?其次,如果配置正确,我将指定什么路径以便可以在该内部嵌套 jar 中找到 template.html?

0 投票
1 回答
95 浏览

java - OneJar 包括 Dr Tuffs 课程

我希望这是微不足道的,但我在最后期限内,所以如果这是一个愚蠢的问题,我深表歉意。

我正在使用 Dr Tuffs OneJar for Maven 构建一个胖 jar,包括我所有的依赖项等。但是,当我使用jar tf xxx.one-jar.jar它时,它会列出我期望的东西,比如我的普通 jar,还有所有 Dr Tuffs 代码。以下只是命令的摘录:

我希望我可以在我的 pom 文件中设置一个属性来阻止它这样做。

0 投票
0 回答
696 浏览

java - One-Jar FileNotFoundException

我有一个 Java 应用程序,我在其中使用了 openCv(opencv_java259.jar)。它在 Eclipse 中正常工作。为了将应用程序打包到可执行的 .jar 文件中,我使用One-Jar(命令行方法),但它无法正常工作,并且出现以下错误:

我已经完成了这些步骤:

  • 我已经从 Eclipse 创建了一个可运行的 .jar 文件:右键单击项目-->导出--->可运行的 Jar 文件

  • 我创建一个工作目录“工具”包含目录 main 和 lib

  • 将我的主应用程序 jar 文件(在步骤 1 中创建)复制到 root/main(名为 MyApplication.jar)并将库依赖项复制到 root/lib(opencv_java259.jar)

  • 我将 one-jar-boot-0.97.jar 文件解压到根目录

  • 编辑 boot-manifest.mf :

清单版本:1.0

Ant 版本:Apache Ant 1.7.1

创建者:One-Jar 0.97 Ant taskdef

一罐主类:main.MyApplication

主类:com.simontuffs.onejar.Boot

但是当我执行命令行时出现错误:

C:\Users\User\Desktop\Tool> jar -cvfm ../one-jar.jar boot-manifest.mf 。

你有什么建议吗?谢谢大家。

0 投票
1 回答
569 浏览

sbt - 如何从一个 jar 可执行文件中关闭应用程序加载警告?

我将 sbt 与 one-jar 插件一起使用,但是当我运行已创建的 one-jar 可执行文件时,我会收到如下所示的连续消息流:

我尝试按照对one-jar remove verbose warning information on application load的一些响应中的建议将参数传递给 jvm ,但我继续收到烦人的警告。

使用 sbt-onejar 时如何关闭这些警告?

我正在使用最新版本的sbt-onejar

0 投票
1 回答
9 浏览

onejar - 是否可以在没有 IDE 的情况下使用 One-Jar?

我正在尝试查找有关如何在没有 Eclipse 的情况下使用 One-Jar 的教程,但没有成功。可能吗?我有我的类和 commons-io.24.jar 需要在里面,我正在命令行中编译。

谢谢!