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

Java:从文件系统加载资源

何松
2023-03-14
问题内容

我的项目设定

我有以下项目设置:

\program.jar  
\images\logo.png

在我的代码中,我使用相对URL引用图像"images/logo.png"

问题

如果我在目录中使用以下命令运行此程序:

c:\projects\program_dir\bin\>java -jar program.jar

然后一切正常,Java能够找到该图像。

现在,我的问题是,我需要能够从其他目录运行该程序。

c:\>java -jar c:\projects\program_dir\bin\program.jar

该程序已执行,但是现在所有相对URL不再起作用。

我需要的

如何计算program.jar文件的执行位置,以便可以将相对URL更改为绝对URL?


问题答案:

如果可能的话,我会做的是将图像与Jar一起打包。

这样,您不必担心Jar的发射位置。

然后,您将需要加载类似于以下内容的图像:

InputStream stream = this.getClass().getClassLoader().
                                     getResourceAsStream("/images/logo.png");


 类似资料:
  • 问题内容: 我有一个简单的程序,需要显示图像。我知道如何从Eclipse运行代码,也知道如何从JAR文件运行,但是我想要一个在两种情况下都可以使用的解决方案。 Eclipse项目就是这样的: 可在Eclipse中运行的代码段: 适用于JAR的文件(全部在一个JAR文件中): 为了使单个代码在两种情况下都能正常工作,我需要更改什么? 问题答案: 将文件夹放在文件夹中,Eclipse会将图像复制到目标

  • 我可以使用Picasso库从文件系统加载图像吗? 我正在使用让用户从他的图库中选择一张照片,然后想要显示所选图像。 我已经有了获取图像文件系统Uri的工作代码,但无法获取毕加索。load()方法工作。

  • 我需要加载不同服务器上存在的类文件,并在类文件中执行方法。我不想使用超文本传输协议或RMI,但想应用这种方法。我正在看URLClassLoader,但没有得到任何地方。有人能给我一个从不同服务器加载类的例子吗?

  • 我如何实现这一点?我尝试将OSGi捆绑包作为JarInputstream读取,并读取捆绑激活器完全限定的类路径,并尝试使用class.forName(“”)和转换到BundleActivator接口的类型来实例化它。但是在启动它的同时,它将bundle上下文作为参数来启动方法。 有没有办法,我可以把OSGi包实用地交给容器,这样它就会负责安装和启动包,然后我的UI就会自动在显示中获取这个新的包名。

  • 问题内容: 我的项目具有以下结构: 我有一个文件,我想从单元测试中加载文件 我有此代码不起作用。它抱怨“没有这样的文件或目录”。 我也试过了 这也不起作用。它返回。我正在使用Maven构建我的项目。 问题答案: 尝试下一个: 如果上述方法不起作用,则已在以下类中添加了各种项目:1(代码在此处)。 以下是有关如何使用该类的一些示例:

  • 我在maven项目的src/main/resource文件夹中下载了.sh文件,我正在通过下面的代码阅读它 如果我使用jar EX作为应用程序运行:- java-jar runscript.jar SCHEMA_NAME /users/ideaprojects/runscript/target/file:/users/ideaprojects/runscript/target/runscripts