Java 运行导出程序时发生异常,但在Eclipse中不发生异常

Java 运行导出程序时发生异常,但在Eclipse中不发生异常,java,eclipse,export,Java,Eclipse,Export,我正在编写一个程序,并试图将其导出并发送给某人。当我在Eclipse中运行该程序时,它运行得非常好。但是,当我将其导出为可运行的JAR文件并双击它时,它退出并告诉我检查控制台 以下是堆栈跟踪: javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(ImageIO.java:1275) at me.pogostick29.audiorpg.util.PrereleaseChe

我正在编写一个程序,并试图将其导出并发送给某人。当我在Eclipse中运行该程序时,它运行得非常好。但是,当我将其导出为可运行的JAR文件并双击它时,它退出并告诉我检查控制台

以下是堆栈跟踪:

javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1275)
    at me.pogostick29.audiorpg.util.PrereleaseChecker.run(PrereleaseChecker.java:29)
    at me.pogostick29.audiorpg.AudioRPG.main(AudioRPG.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1275)
    at me.pogostick29.audiorpg.window.Window.<init>(Window.java:62)
    at me.pogostick29.audiorpg.window.WindowManager.setup(WindowManager.java:16)
    at me.pogostick29.audiorpg.AudioRPG.main(AudioRPG.java:32)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

还有,当我尝试

myPicture=ImageIO.read(Window.class.getResource(“/images/audiorpglogo.png”)

即使在Eclipse中运行,我也会得到堆栈跟踪:

java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1362)
    at me.pogostick29.audiorpg.window.Window.<init>(Window.java:70)
    at me.pogostick29.audiorpg.window.WindowManager.setup(WindowManager.java:16)
    at me.pogostick29.audiorpg.AudioRPG.main(AudioRPG.java:29)
java.lang.IllegalArgumentException:input==null!
在javax.imageio.imageio.read(imageio.java:1362)
atme.pogostick29.audiorpg.window.window.(window.java:70)
at me.pogostick29.audiorpg.window.WindowManager.setup(WindowManager.java:16)
at me.pogostick29.audiorpg.audiorpg.main(audiorpg.java:29)
您可以这样尝试:

ImageIcon icon = new ImageIcon("images/myimage.jpg");
如果在使用JAR文件运行应用程序的同一文件夹中有
images/myimage.jpg
目录,这将起作用


或者,如果您想使用放置在JAR文件中的图像,您可以使用

ImageIcon icon = new ImageIcon(getClass().getResource("images/myimage.jpg"));
当它在IDE中无法工作时,不要害怕。当您从JAR文件运行它时,它将工作


下面是一些适用于我的代码示例:

import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyFrame extends JFrame {
    private static final long serialVersionUID = 1L;

    private JLabel iconLabel;

    public MyFrame() throws IOException {

        ImageIcon icon = new ImageIcon(getClass().getResource(
                "images/myimage.jpg"));
        iconLabel = new JLabel(icon);
        getContentPane().add(iconLabel);

        setSize(icon.getIconWidth(), icon.getIconHeight());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) throws IOException {
        new MyFrame();
    }
}
当我尝试在Eclipse中运行它时,我得到

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
    at MyFrame.<init>(MyFrame.java:14)
    at MyFrame.main(MyFrame.java:25)
线程“main”java.lang.NullPointerException中的异常 位于javax.swing.ImageIcon.(ImageIcon.java:205) 在MyFrame上。(MyFrame.java:14) 位于MyFrame.main(MyFrame.java:25)
这个Eclipse项目看起来像

在我将这个项目导出到JAR之后,使用
images
folderby

右键单击项目
->
导出
->
JAR文件
->
下一步

next
->
next
->
选择主类

我双击已创建的JAR文件并查看带有我的图像的框架:


转到命令提示符/终端,并使用
java-jar
语法运行程序。然后可以看到异常输出。把它贴在这里。给我们看看异常/跟踪怎么样?好的,跟踪很好。不幸的是,它没有告诉我们你的代码。它说它无法加载图像。我猜Eclipse没有将图像添加到jar文件中
javax.imageio.imageio.read
@PogoStick29如何访问图像文件?你能给我们看一下代码吗?我需要JAR是独立的。我尝试了与您的第二个想法类似的方法(参见上面的代码),但没有成功。下面是我的图像文件的存储位置:下面是我尝试访问它的方式:
myPicture=ImageIO.read(getClass().getResource(“images/audiorpglogo.png”)
这是我在导出(作为JAR文件)并使用
java-JAR
运行时得到的堆栈跟踪:
java.lang.IllegalArgumentException:input==null
您想要一份代码副本,这样您就可以试着让它工作了吗?@PogoStick29当您从IDE或控制台运行它时,是否有此错误?当我使用
java-jar
Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
    at MyFrame.<init>(MyFrame.java:14)
    at MyFrame.main(MyFrame.java:25)