Java 运行导出程序时发生异常,但在Eclipse中不发生异常
我正在编写一个程序,并试图将其导出并发送给某人。当我在Eclipse中运行该程序时,它运行得非常好。但是,当我将其导出为可运行的JAR文件并双击它时,它退出并告诉我检查控制台 以下是堆栈跟踪: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
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)