已经制作了应该在我的桌面上打开图像的程序,但是当我运行它时它会给我错误java.lang.ArrayIndexOutOfBoundsException
。我做错了什么?
import java.awt.BorderLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
public class Image {
public static void main(String[] args) throws Exception
{
new Image(args[0]);
}
public Image(final String filename) throws Exception
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JFrame editorFrame = new JFrame("C:/Users/Username/Desktop/index.jpg");
editorFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
BufferedImage image = null;
try
{
image = ImageIO.read(new File(filename));
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
ImageIcon imageIcon = new ImageIcon(image);
JLabel jLabel = new JLabel();
jLabel.setIcon(imageIcon);
editorFrame.getContentPane().add(jLabel, BorderLayout.CENTER);
editorFrame.pack();
editorFrame.setLocationRelativeTo(null);
editorFrame.setVisible(true);
}
});
}
我怎么得到这个错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Image.main(Image.java:15)
答案 0 :(得分:1)
您必须将命令行参数传递给main()
方法。那个论点我们正在通过Image()
构造函数。
new Image(args[0]);
请查看下面的命令行概念。
什么是命令行参数?
Java应用程序可以从命令接受任意数量的参数 线。这些参数称为命令行参数。这允许用户在何时指定配置信息 该应用程序已启动。
如何传递命令行参数?
用户在调用应用程序时输入命令行参数 并在要运行的类的名称后指定它们。
例如, 假设一个名为Sort的Java应用程序对文件中的行进行排序。要对名为friends.txt的文件中的数据进行排序,用户将输入:
java Sort friends.txt
此处:排序 - 类名
friends.txt ---命令行参数。
启动应用程序时,运行时系统会通过 通过数组的应用程序主要方法的命令行参数 字符串。在前面的示例中,传递了命令行参数 到包含单个String的数组中的Sort应用程序: " friends.txt"
<强>更新强>:
您可以使用Space作为分隔符传递多个命令行参数。
喜欢
java Sort stack.txt overflow.txt
如何在Eclipse中传递命令行参数?
转到package explorer或Navigator视图上的程序
选择该程序---&gt;然后右键单击程序选择运行方式 ---&gt; 运行配置 ---&gt;在顶部选择参数第二个选项---&gt;就程序参数
提供论据见下面的屏幕截图:
答案 1 :(得分:0)
看起来你忘了通过命令行args。
new Image(args[0]);