首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在为Swing桌面应用程序制作jar时,将资源放在哪里?

在为Swing桌面应用程序制作jar时,将资源放在哪里?
EN

Stack Overflow用户
提问于 2012-09-09 21:53:34
回答 3查看 1.2K关注 0票数 1

我想知道我应该在哪里保存我的资源,就像我在制作可执行jar时显示一些图像,播放一些媒体文件一样?我应该将它包含在可执行jar中,还是应该保留在可执行jar之外?

如果我将资源放在jar之外,我应该在程序中传递什么URL位置URL来访问图像?

实际上,问题是我想制作我的jar文件的可分发副本。

如果我提供用于访问图像和媒体文件的本地系统的位置,它将在我的系统中工作,但当我在其他系统中分发它时会发生什么?

EN

回答 3

Stack Overflow用户

发布于 2012-09-09 22:03:52

这取决于您的应用程序。

您可以将资源打包到jar中。通常,它适用于从未更改过的资源:公司徽标、图标等。您可以使用getClass().getResourceAsStream()阅读它们。

其他解决方案是从服务器下载文件(例如,通过HTTP)。此解决方案适用于您不想与应用程序打包在一起的媒体。例如,您想要向用户播放的视频剪辑。或者,可能是前面示例中的本地化图标或多语言应用程序的本地化消息。

您正在下载的资源可以被缓存。您可以使用用户的临时目录(System.getProperty("java.io.tmpdir")),有时也可以使用preferences API

票数 4
EN

Stack Overflow用户

发布于 2012-09-09 22:05:18

这不是一个激进的答案,但在本质上,你可以为图像、属性等(甚至是媒体)创建一个资源项目。

然后,您可以将资源项目(以下称为"MyProjectWsResources")作为子项目添加到代码项目(以下称为"MyProjectWsClient")。由于MyProjectWsResources位于MyProjectWsClient的构建路径中,因此可以更轻松地引用您的资源。如果您不清楚将某些内容放到项目的构建路径中需要做什么,那么在引用信息时,它会告诉您MyProjectWsResources的src文件夹中的所有内容都在MyProjectWsClient中(只要您没有使用绝对路径:)

为什么要采用多项目的方法呢?IMO将代码与资源分开,因此您可以分别下载资源和代码,当您的代码仅有更新时,您的客户端无需重复下载资源项目(我觉得与更新资源相比,更新代码的频率要高得多)。更少的服务器带宽(如果您正在使用Java WS或任何其他打包/系统,这一点很重要,我现在意识到您可能不是)..不过,希望这能有所帮助:)

票数 3
EN

Stack Overflow用户

发布于 2012-09-10 07:36:29

我想制作我的jar文件的可分发副本。

首先,我会回答你问题中唯一不是问题的句子。

通过在网上点击一个链接就可以将一个Swing桌面应用程序分发给多个用户,一个很好的方法是Java Web Start

使用JWS部署意味着资源需要放在Jar中。为了使用JWS的“自动更新”特性获得最佳结果,媒体的Jar应为:

从单独的沙盒扩展中引用的未压缩文件,以便可以与其他应用程序共享,并且可以延迟单独加载/更新(对于视频、声音和用于文本信息的image

  • compressed (超文本标记语言、实时文件格式、CSV),作为needed).

  • Compression:
    • )

  • 在Jar中放入应用程序已知的路径。(例如/resources/video/vidNNN.mp4)

Jars中的资源是一个embedded-resource,必须通过URL (或者Alex提到的InputStream,但URL更健壮)来访问。引用info. page

代码语言:javascript
复制
URL urlToResource = this.getClass().getResource("/path/to/the.resource");

在开发期间,通常最好安排一个构建,以最终用户将获得的相同方式组装资源-构建应用程序。每次运行。

在其他情况下,您可能希望将资源留在服务器上的公共位置,并根据需要访问它们,但这实际上使服务器成为运行应用程序的媒体相关部分所必需的。您的资源似乎既是静态的(用户不会更改它们),也是一个“应用程序资源”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12339664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档