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

JAR中的Java Desktop.open(File f)参考文件?

秦博延
2023-03-14
问题内容

是否Desktop.open(File f)可以引用JAR中的文件?

我尝试使用ClassLoader.getResource(String s),将其转换为URI,然后从中创建文件。但这导致IllegalArgumentException: URI is not hierarchical

URL url = ClassLoader.getSystemClassLoader().getResource(...);
System.out.println("url=" + url);    // url is valid
Desktop.getDesktop().open(new File(url.toURI()));

JavaRanch的答案是可能的,它是根据JAR中的资源创建一个临时文件-不太好用。

它在Windows XP上运行。


问题答案:

.jar文件中的“文件”不是操作系统的文件。它们只是.jar文件的某些区域,通常会被压缩。它们不能被操作系统作为单独的文件寻址,因此无法以这种方式显示。

Java本身有一种巧妙的方式来通过某些URI来引用这些文件(如您所使用所实现的getResource()),但这完全是Java特有的。

如果希望某些外部应用程序访问该文件,则有两种可能的解决方案:

  1. 提供一些标准化的方式来访问文件或
  2. 使应用程序能够处理打包在.jar(或.zip)文件中的文件。

通常2并不是真正的选择(除非其他应用程序也用Java编写,在这种情况下这很容易)。

选项1通常是通过简单地写入临时文件并引用该文件来完成的。或者,您可以启动小型Web服务器并通过某个URL提供文件。



 类似资料:
  • DL非常好的科普文章,可快速浅显了解Deep Learning: http://www.nature.com/nature/journal/v521/n7553/full/nature14539.html 深度学习大牛Bengio最近出版的一本书:Deep Learning, Deep Learning (Bengio 2015-10-03).pdf_免费高速下载 DL在视觉中打响的第一枪:NIP

  • 参考文献 [1] Algorithmics, The Spirit of Computing, D. Harel, Y. Feldman,电子版。 [2] Computational Thinking, J. M. Wing, CACM, Vol. 49, No. 3, 2006。 [3] How to Think Like a Computer Scientist, Learning with

  • 参考文档 Dockerfie 官方文档:https://docs.docker.com/engine/reference/builder/ Dockerfile 最佳实践文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ Docker 官方镜像 Dockerfile:https://github.

  • 在企业领域,有很多应用和系统需要在生产环境中使用批处理来执行大量的业务操作。批处理业务需要自动地对海量数据信息进行各种复杂的业务逻辑处理,同时具备极高的效率,不需要人工干预。

  • 这是一个文档的汉化项目,主要是翻译 jQuery 的文档为中文。 来自作者的话: 我之所以不惜放弃先前的html转而实现现在的xml,主要是为了能够专心维护一个数据核心,而把各种 关于表现的内容都分离开来。我现在所写的xslt文件仅仅是针对当前xml的一种实现形式。chm版本也是xslt文件的一种延伸。 所以,如果对当前的样式不满意的,可以随意针对xml文件写新的xslt文件,也可以针对xml用a

  • MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。