Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jar文件输入==null,而java应用程序正在运行_Java_Maven_Jar_Resources - Fatal编程技术网

jar文件输入==null,而java应用程序正在运行

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

我目前正在编写一个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  == 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”);