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

从JAR或文件系统加载ImageIcon

咸皓
2023-03-14
问题内容

我有一个简单的程序,需要显示图像。我知道如何从Eclipse运行代码,也知道如何从JAR文件运行,但是我想要一个在两种情况下都可以使用的解决方案。

Eclipse项目就是这样的:

- Project (java)
  - src
    - controller
      - Main.java
    - ui
      - Display.java
  - images
    - image.jpg

可在Eclipse中运行的代码段:

ImageIcon image = new ImageIcon("images/image.jpg);

适用于JAR的文件(全部在一个JAR文件中):

java.net.URL imgURL = getClass().getResource("/images/image.jpg");
ImageIcon image = new ImageIcon(imgURL);

为了使单个代码在两种情况下都能正常工作,我需要更改什么?


问题答案:

images文件夹放在src文件夹中,Eclipse会将图像复制到目标文件夹(通常为binclasses),这将使它们可从类路径中使用,就像它们在应用程序的发行版中的jar中一样。

getResource()没有放在罐子里
它在类加载器的类路径中查找。因此,图像是否在罐子中并不重要。它必须在类路径中。从Eclipse启动时,显然eclipse的目标文件夹(binclasses通常为)位于应用程序的运行时类路径中。



 类似资料:
  • 问题内容: 我的项目设定 我有以下项目设置: 在我的代码中,我使用相对URL引用图像。 问题 如果我在目录中使用以下命令运行此程序: 然后一切正常,Java能够找到该图像。 现在,我的问题是,我需要能够从其他目录运行该程序。 该程序已执行,但是现在所有相对URL不再起作用。 我需要的 如何计算program.jar文件的执行位置,以便可以将相对URL更改为绝对URL? 问题答案: 如果可能的话,我

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

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

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

  • 我试图在程序中加载一个jar文件来调用不同的方法。我有一个类来完成这项工作,但是该类使用加载jar文件,它依赖于系统类加载程序,因此,例如,如果加载的jar执行它完成整个应用程序的执行,终止当前运行的Java虚拟机。我的意图是,如果加载的jar最后一次这样做,它只完成jar,而不是整个应用程序。此外,我希望能够关闭jar,以便在需要时可以稍后重新启动它。我使用以下代码从jar实例化所需的类,并从我

  • 我在我的项目中使用的是umbraco 4.11.3。我的项目在Windows 7上运行良好,并在visual studio 2012上运行。但它在Win 8中从visual studio 2012运行时并不工作! 错误是: 无法加载文件或程序集“System.Web”。Mvc,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e