Почему maven создает исключение InvocationTargetException?

Я бегу Maven из командной строки

mvn exec:java -Dexec.mainClass=org.xmlcml.svg2xml.analyzer.DocumentListAnalyzer 
   -Dexec.args=.

Когда моя программа выдает исключение RuntimeException, maven не выдает это, а выдает InvocationTargetException

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: Only one primary allowed for 3 line textL
ineGroup
        at org.xmlcml.svg2xml.text.TextLineGroup.createSuscriptTextLineList(Text
LineGroup.java:181)
        at org.xmlcml.svg2xml.text.TextLineGroup.createHtml(TextLineGroup.java:2
40)

Этого не происходит при запуске Eclipse.

Почему это происходит? (Это смущает меня и смущает моих пользователей).

1 ответ

Решение

Методы вызова сказали нам следующее:

Reflection предоставляет средства для вызова методов в классе. Как правило, это будет необходимо, только если невозможно привести экземпляр класса к нужному типу в неотражающем коде.

Методы вызываются с java.lang.reflect.Method.invoke(), Первый аргумент the object instance на котором этот конкретный метод должен быть вызван. (Если метод является статическим, первый аргумент должен быть нулевым.) Последующие аргументы являются method's parameters,

Если базовый метод генерирует исключение, он будет обернут java.lang.reflect.InvocationTargetException, Исходное исключение метода может быть получено с использованием механизма цепочки исключений InvocationTargetException.getCause() метод.

Поскольку трассировка стека также сказала нам, что exec:java также использует Reflection также. Затем оригинальное исключение также переносится. Пожалуйста, обратитесь к исходному коду в org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297) для дальнейшего использования.

Я надеюсь, что это может помочь.

Другие вопросы по тегам