【发布时间】:2013-12-12 07:56:15
【问题描述】:
是否可以将启动画面图像放在jar文件中并在命令行中使用-splash选项?
背景: 我有 3 个 jar 文件,它们有一个有趣的依赖树,我要运行的主类在“公共”jar 中(它反射性地调用其他两个 jar 的主类)。所以使用 -jar 命令行是不可能的。
是的,我知道您可以在清单中使用SplashScreen-Image 行,但是在使用 java 命令行的 -cp 选项时,所有清单似乎都被忽略了。如果可能的话,我有点想将资源自包含在罐子中,所以我希望其中一个罐子能容纳有问题的启动画面。但是“xx.jar!path”或“xx.jar/path”之后的splash 的路径似乎不起作用。有可能吗,怎么做?
编辑:好的,让我再试一次。我有三个罐子。一个里面有图形逻辑,我们称之为“UI”,一个里面有业务逻辑,我们称之为“Core”,一个有两者之间的公共类。 Core 组件和 UI 组件都可以作为自己的应用程序运行,并且它们有自己的主类,并且它们的 jar 被设置为在类路径中包含公共 jar。但是常见的 jar 有一个带有 main 方法的类,它调用两个主类。通用 jar 是两者之间的库,不应该将 UI 或 Core jar 作为依赖项,因为如果组件单独运行,它们中的任何一个都可能丢失。
我想要的只是一种在调用公共 jar 中的主类时引用 UI jar 中包装的启动画面的方法。我已经解决了使用-cp 选项调用这个普通jar 的main 的逻辑。它只是还没有适当的启动画面。有可能吗,怎么做? (我希望这个问题是通用的,不包括所有这些信息,但无论如何。)
【问题讨论】:
-
你的问题没有多大意义。为什么不能/不会使用 -jar 选项? “其他两个罐子的主要类”是什么意思?我会将“主类”作为具有
main()方法入口点的类;所以用复数形式谈论它们是没有意义的,除非你有多个程序要运行,使用相同的依赖项。 -
基本上,我们的程序是两个组件,它们可以分开运行(在不同的虚拟机中,在不同的机器上等),但此时在同一个虚拟机中运行,并根据不同的方式相互交谈关于他们是如何分裂的。每个组件都包含在自己的 jar 中,任何公共物品都放在公共 jar 中。公共主类简单地启动两个线程并在每个线程中反射调用 main。但所有这些都是背景信息,实际上并不需要回答这个问题,只是为了避免我已经广泛阅读过的“只使用这个东西”的答案。
-
仍然不清楚为什么不使用
-jar选项。您是否知道即使您使用-jar选项,您的代码也不必位于单个 .jar 文件中。你知道如何使用 main jar manifest 的 Class-Path 属性吗? -
更新了问题。
标签: java command-line jar