0

我不熟悉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

这个错误是什么意思?

4

5 回答 5

1

JarRsrcLoader.main方法中,方法调用是使用 inig refelction (JarRsrcLoader.java:58) 来调用SAStoSeP.main的。

在调用该方法ArrayIndexOutOfBoundsException时抛出了一个 (SAStoSeP.java:56)。这个异常被包裹在一个InvocationTargetException.

方法javadoc:

throws InvocationTargetException - 如果底层方法抛出异常。

于 2013-10-20T08:37:13.287 回答
1

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

  • 该程序从命令行读取参数,而您没有提供任何参数。
  • 这不是main您应该运行的课程。您正在启动一个可运行的JAR 文件,但它可能包含许多main()方法。
于 2013-10-20T08:40:23.620 回答
0

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

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

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

于 2013-10-20T08:51:58.983 回答
0

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

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

于 2013-10-20T08:37:03.233 回答
0

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

于 2013-10-20T08:38:57.113 回答