这是我当前的目录结构(包含在connect4
目录中):
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── dv
│ │ │ └── app
│ │ │ ├── App.java
│ │ │ ├── Board.java
│ │ │
| | |
│ │ │
│ │ └── resources
│ │ ├── red-chip.png
│ │
│ └── test
│ ...
|
└── target
├── classes/com/dv/app/*.class
基本上来自板。java
,我正在尝试访问红筹码。png
。
我尝试了很多变体来工作,现在我只有:
ImageIcon redChip=new ImageIcon("red-chip.png");
我尝试改变路径使用/Resources
,使用getResources
函数,但似乎没有工作。
当我使用mvn-package
生成jar并运行jar文件时,它不会显示图像。
我执行解压-l
Length Date Time Name
--------- ---------- ----- ----
126 2019-05-30 20:03 META-INF/MANIFEST.MF
0 2019-05-30 20:03 META-INF/
0 2019-05-30 19:19 com/
0 2019-05-30 19:19 com/dv/
0 2019-05-30 19:20 com/dv/app/
0 2019-05-30 20:03 META-INF/maven/
0 2019-05-30 20:03 META-INF/maven/com.dv.app/
0 2019-05-30 20:03 META-INF/maven/com.dv.app/connect4/
4190 2019-05-30 19:20 com/dv/app/App.class
4975 2019-05-30 19:20 com/dv/app/Board.class
110 2019-05-29 20:29 META-INF/maven/com.dv.app/connect4/pom.properties
7856 2019-05-30 19:32 red-chip.png
这是我的
pom。xml
。主要要看的是buildjar插件。
(删除了无用的东西,如artifactID等)
<project xmlns="...">
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.dv.app.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
所以我的问题如下:
>
引用我的png文件的正确方法是什么,以便它在jar中可见?
为什么png文件位于jar的根目录中?
如果您需要将图像作为应用程序的图标加载,您的代码应该如下所示。这将为您的应用程序设置图标。
this.setIconImage(new ImageIcon(getClass().getResource("/red-chip.png")).getImage());
如果需要使用setIcon
方法,可以使用
ImageIcon IC = new ImageIcon(getClass().getResource("/red-chip.png"));
如何加载放置在可执行jar文件的资源文件夹中的属性文件。在这里,我的应用程序本身就是一个jar,它自己执行。它需要在运行时根据代码中提到的路径找到这个属性文件(放在资源文件夹下)。我用过以下两种方法,但都没用。这里的重点是,当我在eclipse中执行时,这两个选项都可以正常工作,但当我将其打包到可执行jar中时,这两个选项都不起作用。它抛出NullPointerException。我在这里看到的唯
我正在尝试从可执行JAR文件加载图像。 我跟踪了这里的信息,然后是这里的信息。 这是检索图像的函数: 这就是它的名称: 这是一个简单的对象。我也不会得到NullPointerException,除非它被UI屏蔽。 我检查了JAR文件,图像位于: /图片/标识1。巴布亚新几内亚 当前代码在eclipse中以及导出到JAR并在终端中运行时都有效,但在双击JAR时不起作用,在这种情况下,图标是默认的JF
问题内容: 我被要求构建一个Java系统,该系统在运行时能够加载新代码(扩展)。我的代码运行时如何重新加载jar文件?或如何加载新的jar? 显然,由于持续的正常运行时间很重要,因此,我想增加在此过程中重新加载现有类的功能(如果这样做不会使事情复杂化)。 我应该注意什么?(将其视为两个不同的问题-一个关于在运行时重新加载类,另一个关于添加新类)。 问题答案: 用现有数据重新加载现有类可能会破坏事情
我有两个jar文件。第一个只包含接口 在请求的基础上,我试图从中加载我的实现类。jar文件存在于某个文件夹中,在运行时使用URLClassLoader。 课程正在加载 我确信这是由于我使用不同的类加载器来加载类,但是我如何克服类之间的兼容性问题。 同样的代码可以在正常的J2SE环境中工作,但不能在JBoss环境中工作。 如果我的查询不清楚,请让我知道我也可以粘贴源代码。
问题内容: 我需要从罐子中加载属性文件。该罐子包含在war文件中。这是结构 现在,我在一个servlet中编写了以下代码,如下所示: 但是上面的代码我得到流为空。如果我将属性文件放在ROOT.war / WEB- INF中,则可以正常工作。我有一个不错的主意,如果getResourceAsStream中的路径以“ /”开头,那么它将在上下文根目录中搜索资源。但是,如何读取位于jar的资源,该jar
问题内容: 我正在构建一个Java应用程序,该应用程序的某些部分需要每日更新。我想将频繁更新的零件作为小jar文件从服务器下载到内存。我正在将jar文件下载为字节流,而不使用URLClassloader。 如何使jar文件中的类可从我的自定义类加载器供系统类加载器使用? 我如何确保下载jar文件和加载的类永远不会缓存或写入磁盘。 问题答案: 您可以从内存中加载自定义类加载器。您可以强制系统加载器从