ClassCastException в исполняемом JAR не внутри IDE - PullRequest
0 голосов
/ 04 ноября 2010

У меня проблема с запуском приложения вне Eclipse. Это дает ClassCastException в том месте, где нет приложения внутри IDE. В частности, я вывожу в терминал имя экземпляра, который пытаюсь привести, и внутри IDE он дает правильный тип, такой как «NestedEngineImpl», тогда как вне IDE он выдает «EngineImpl», за исключением того, что EngineImpl нельзя привести к NestedEngineImpl , NestedEngineImple расширяет EngineImpl. Исполняемый файл JAR был создан с использованием Eclipse 'Export Runnable JAR-файла. Баночка открывается и работает до момента исключения.

Любой совет будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 04 ноября 2010

Проверьте версии ваших банок. Попробуйте это (замените «java / lang / Object.class» на соответствующий путь к вашему классу):

ClassLoader.getSystemClassLoader().getSystemResource("java/lang/Object.class")

Он даст вам URL вашего банку, который вы можете распечатать, чтобы проверить, откуда придет ваш класс).

0 голосов
/ 05 ноября 2010

Спасибо всем за ответы. Я просто не указал аргументы VM при запуске jar, которые были установлены в Eclipse.

0 голосов
/ 04 ноября 2010

Возможно, вы страдаете от того, что мы называем Jar Hell, это похоже на DLL Hell, когда у вас неверная версия JAR, и вам необходимо заменить ее на правильную.Это происходит чаще в больших средах разработки, где библиотеки постоянно меняются.

...