当前位置: 首页 > 面试题库 >

制作一个单罐Java应用程序

扶高歌
2023-03-14
问题内容

如果我有一个Java项目,其中包含几种不同类型的文件(图片,声音等)和多个jar依赖项,那么将它们打包到一个可以双击的jar中的好方法是什么?

我知道jar本身很笨,因为它们不会在内部查找它们所依赖的文件(这是我在稍有沮丧(轻描淡写)后才意识到的)。-如果jar A取决于jar
B中包含的类,则将jar B放入jar A中将不起作用。Jar A必须与jar B在同一目录中。

…现在,我知道我可以从所有其他jar中提取所有文件,并将所有文件放在同一目录中。那样 可以了,但是我不想这样做,因为:1.太杂乱了;
2.它仍然不能解决需要将声音文件与最终jar放在同一目录中的问题。(无论出于何种原因,声音文件的行为与内部jar完全相同)

基本上,我只是想做到这一点,以使我的应用程序所依赖的文件不会令人讨厌和可见。因此,如果有某种解决方案可以将所有内容放入一个jar中,并且它是运行整个程序的唯一必需文件,那将是最佳选择。但是,我愿意接受创造性的/创造性的方式来绕过该问题,例如在父目录中使批处理脚本执行jar或其他操作。(我之所以说“或某物”,是因为确切的情况仅适用于Windows操作系统。…您知道我的意思!)


问题答案:

您可以提取所有JAR,并将它们合并为一个通用JAR。有ANT任务和Maven插件可立即用于执行此操作。此外,如果您的应用程序编写正确,也不会阻止您将媒体文件和其他资源放入JAR。您只需要确保这些资源是“
从类路径

加载的,而不是从当前工作目录中加载的。



 类似资料:
  • 是的。这种问题已经被问了很多时间了。这是我得到的。 我有一个用gradle构建的jar文件(将被称为“库”)。这个库在(依赖项)中嵌入了一个解压缩的jar。库的内部包(文件夹树)和嵌入类处于同一级别。例如,com.xxx.yyy是库,com.xxx.aaa是嵌入的、解压缩的jar类(依赖项)。 如果我以“独立的方式”运行jar(Java-jar等),它就能正常工作。 但如果我将这个jar作为库添加

  • 创建一个简单的火炬应用程序,它可以放在相机闪光灯上并将其关闭。这个应用程序应该有一个简单的用户界面,可以打开闪光灯,也可以关闭它。连续使用1分钟后,用户界面应该提示用户他想继续使用火炬。如果用户说是,火炬将继续亮一分钟,这个循环将重复。如果用户说不,火炬将被推迟。 创建一个简单的火炬应用程序很容易,我已经制作了火炬应用程序,但问题中提到的第二件事是在1分钟后做出提示,我不明白有人能帮忙吗? 这是我

  • 本文向大家介绍使用Java制作一个简单的记事本,包括了使用Java制作一个简单的记事本的使用技巧和注意事项,需要的朋友参考一下 通过使用Java的Swing、IO来实现一个简单记事本,实现打开指定的text文本文件,然后将text文件的内容加载到Swing组件中,然后在Swing组件中编辑记事本内容,然后同菜单的保存选项将编辑后的内容保存到text文件中。代码如下: 效果图:   以上就是本文的全

  • 为了优化Docker层,我尝试将我们的30M Spring Boot fat jar拆分为2M应用程序。jar和2800万libs。罐子 我可以使用爆炸模式,但我更喜欢使用2罐,因为它简化了一些事情,如部署,脚本等。 我的问题是,当我把lib分离出来时,我无法让启动器找到它们。无论是在jar模式还是爆炸模式(有两个dir)下,我都会 我在以下所有情况下都会得到这个: 知道我怎么才能让它工作吗?

  • 问题内容: 我想防止在Java中启动应用程序的多个实例。我知道两种方法: 锁定文件 锁紧插座 但是,哪一个是更有效且更易于使用的呢?我应该使用哪一个? 同样欢迎任何其他解决方案。 问题答案: 编辑:我尝试使用Win200864b(版本不重要)和JFrame并通过JFrame在SystemTray中移动到Front()或图标化。DO_NOTHING_ON_CLOSE

  • 嗯,这很尴尬。我想使用log4j-over-slf4j进行日志记录,因此我将jar添加到项目中,并在WebLogic应用程序中指定使用包<code>org.slf4j* 但问题是WebLogic上的commons jar库具有slf4j-log4j12.jar,这会产生冲突: 我该如何告诉 WebLogic 忽略该包?