jar文件输入==null,而java应用程序正在运行
我目前正在编写一个GUI,将图像加载到其中并创建拼贴画 我的程序在eclipse中作为Java应用程序运行时运行良好,但当我使用Maven将其编译为JAR文件时,就会出现错误jar文件输入==null,而java应用程序正在运行,java,maven,jar,resources,Java,Maven,Jar,Resources,我目前正在编写一个GUI,将图像加载到其中并创建拼贴画 我的程序在eclipse中作为Java应用程序运行时运行良好,但当我使用Maven将其编译为JAR文件时,就会出现错误 F:\Dropbox\SWT4 Clean\1855992\target>java -jar 1855992-0.0.1-SNAPSHOT.jar Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input
F:\Dropbox\SWT4 Clean\1855992\target>java -jar 1855992-0.0.1-SNAPSHOT.jar
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at swt1.ub4.a1.GridGUI.createLabel(GridGUI.java:60)
at swt1.ub4.a1.GridGUI.<init>(GridGUI.java:181)
at swt1.ub4.a1.GridGUI.showGUI(GridGUI.java:243)
at swt1.ub4.a1.GridGUI$4.run(GridGUI.java:255)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$300(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
我的项目设置:
我相信我必须使用pom.xml手动将其添加到JAR文件中,但是如何添加呢?
如果我将其添加到src/main/resources文件夹,那么我的JAR文件仍然无法工作
编辑:pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.kit.ipd.swt1</groupId>
<artifactId>jmjrst.pop-art-collage</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>edu.kit.ipd.swt1</groupId>
<artifactId>uebungsparent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<repositories>
<repository>
<id>swt1</id>
<name>swt1</name>
<url>http://bob.ipd.kit.edu/nexus/content/repositories/swt1/</url>
</repository>
</repositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.14</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>6.4.1</version>
</dependency>
</dependencies>
<configuration>
<consoleOutput>true</consoleOutput>
<configLocation>${basedir}/src/main/resources/checkstyle_swt1.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptor>src/assembly/src.xml</descriptor>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>swt1.ub4.a1.GridGUI</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
4.0.0
edu.kit.ipd.swt1
jmjrst.pop-art-collage
0.0.1-快照
edu.kit.ipd.swt1
乌斯帕兰特
0.0.1-快照
swt1
swt1
http://bob.ipd.kit.edu/nexus/content/repositories/swt1/
UTF-8
org.apache.maven.plugins
maven checkstyle插件
2.14
com.puppycrawl.tools
代码检查
6.4.1
真的
${basedir}/src/main/resources/checkstyle_swt1.xml
org.apache.maven.plugins
maven汇编插件
2.4
src/assembly/src.xml
包裹
单一的
org.apache.maven.plugins
maven jar插件
2.6
真的
swt1.ub4.a1.GridGUI
真的
真的
org.apache.maven.plugins
maven编译器插件
3
1.7
1.7
commons cli
commons cli
朱尼特
朱尼特
您应该将image.png文件移动到src/main/resources文件夹。您应该将image.png文件移动到src/main/resources文件夹。lifepath.class.getClass().getResourceAsStream(…)使用系统类加载器加载资源,它显然会失败,因为它看不到您的JAR 您不需要修改pom.xml。请尝试以下代码:
ImageIO.read(GridGUI.class.getResourceAsStream("/image.png"));
而不是
ImageIO.read(GridGUI.class.getClassLoader().getResourceAsStream("/image.png"));
getResourceAsStream(…)使用系统类加载器加载资源,它显然失败了,因为它看不到您的JAR
您不需要修改pom.xml。请尝试以下代码:
ImageIO.read(GridGUI.class.getResourceAsStream("/image.png"));
而不是
ImageIO.read(GridGUI.class.getClassLoader().getResourceAsStream("/image.png"));
尝试在文件名之前添加slach:
ImageIO.read(GridGUI.class.getClassLoader().getResourceAsStream(“/image.png”)
并确保它在类路径中。@Jens如何将它添加到类路径中?将它放入src/main/resources
。其余的应该由maven帮你做。@Jens仍然不工作。你能保证文件在你的jar中吗?试着在你的文件名前面加一个slach:ImageIO.read(GridGUI.class.getClassLoader().getResourceAsStream(“/image.png”)
并确保它在类路径中。@Jens如何将它添加到类路径中?将它放入src/main/resources
。其余的应该由maven帮你做。@Jens仍然不工作。你能保证文件在你的jar中吗?GridGUI.class.getResourceAsStream(“/image.png”)
应该可以工作。打开jar(zip格式)以检查正在发生的事情。@JoopEggen不知何故,我的图像文件没有被添加,即使它在资源文件夹中。GridGUI.class.getResourceAsStream(“/image.png”)
应该可以工作。打开jar(zip格式)检查正在发生的事情。@JoopEggen不知何故,我的图像文件即使在resources文件夹中也没有添加。为什么不使用file类?read(新文件(“/image.png”);为什么不使用文件类?read(新文件(“/image.png”);