这个JDK错误消息意味着什么?

时间:2013-10-20 08:34:31

标签: java openjdk

我不熟悉JavaJDK。我有一个java程序作为.jar文件,我想在ubuntu 12.04中运行它。我用这个命令:

java -jar SAStoSEP.jar

但我收到此错误消息:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at SAStoSeP.main(SAStoSeP.java:56)
    ... 5 more

这个错误意味着什么?

5 个答案:

答案 0 :(得分:1)

JarRsrcLoader.main方法中,使用refelction(JarRsrcLoader.java:58)来调用方法调用以调用SAStoSeP.main

在调用该方法时,抛出了ArrayIndexOutOfBoundsException(SAStoSeP.java:56)。此异常包含在InvocationTargetException

来自Method javadoc:

  

throws InvocationTargetException - 如果基础方法抛出异常。

答案 1 :(得分:1)

main()类的SAStoSeP方法中,您正尝试访问空列表的第一个元素。因此,你得到ArrayIndexOutOfBoundsException。它与JDK无关。可能的原因是:

  • 程序从命令行读取参数,而您没有提供任何参数。
  • 这不是您应该运行的main课程。您正在启动 runnable JAR文件,但它可能包含许多main()方法。

答案 2 :(得分:0)

这意味着在SAStoSeP的第56行(在main方法中),抛出了一个ArrayIndexOutOfBoundsException。

因为main方法是通过反射调用的,所以它被包装在InvocationTargetException中,这就是堆栈跟踪被分成两部分的原因。

答案 3 :(得分:0)

错误是不言自明的。检查SastoSep.java第56行的代码 http://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

答案 4 :(得分:0)

由于这是一个专有项目,我们无法告诉您是什么导致抛出特定异常。这需要查看源代码!!

解决此问题的正确方法是询问产品的支持人员解释问题并告诉您如何避免它。首先,任何向用户抛出一般异常的东西都可以说是一个bug。如果您为使用产品的权利付了钱,那么您对可靠性和支持有合理的期望。

但是,考虑到抛出异常的方法......以及异常本身......我猜想SAStoSeP需要一些命令行参数。 (写得不好的main(String[] args)方法可能会在不检查arg[0]的情况下尝试访问args.length。这会导致ArrayIndexOutOfBounds在索引为0.并且您没有提供任何参数...)因此,请查看文档,了解您应该如何使用该命令。

相关问题