В проекте используется сценарий сборки ant, который вызывает wsimport, который, как я обнаружил, имеет устарел и больше не включен в JDK. Не волнуйтесь, я уверен: я могу добавить библиотеки в путь к классам и использовать новый скрипт wsimport.sh, и все будет в порядке.
За исключением того, что это не так. т.
Проект включает в себя сгенерированный код, для которого мы получаем WSDL-файл из другого источника. Похоже, что этот файл WSDL использует импорт javax, а не более новый импорт jakarta. Итак, обновление с javax до jakarta невозможно.
В настоящее время, когда я запускаю wsimport.sh в файле WSDL, я получаю экран, полный трассировки стека Java, который запускается с:
Код: Выделить всё
Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource
Результаты также говорят, что мне просто нужно «обновить мои зависимости Maven», которые с тем же успехом могут быть греческими. Я не думаю, что мы используем Maven.
Во время моего, казалось бы, исчерпывающего поиска в Google и StackOverflow, я в конечном итоге был перенаправлен на этот пост в блоге:
https://nipafx.dev/java-11-migration-guide/
...который в разделе об удалении модулей Java EE частично гласит:< /p>
"Если вы пройдете компилятор, но забудете обработать время выполнения, вы получите NoClassDefFoundError:"
Что именно означает сообщение автор имеет в виду "массировать время выполнения"? Я проверил, что использую Java 11 JDK и исполняемый файл java, используя java -version и java -XshowSettings:properties. Последний даже показывает, что javax.activation.jar загружается в путь к классам. Насколько мне известно, я ничего не делал с JRE. Нужно ли мне это делать?
Я подозреваю, что это МОЖЕТ быть несоответствие версий между моим JAXB-RI и моим файлом jaxws-tools.jar, но я не смог это сделать. найдите список совместимости версий.
Мне кажется, что я упускаю что-то очевидное, но Java никогда не была моей сильной стороной. Чего мне не хватает?
Некоторые добавленные детали для ответа на вопросы, заданные в комментариях:
Это автономное настольное приложение. Я использую JAXWS-RI v2.3.1 и javax.activation.jar v1.2.0. Похоже, код пытается использовать классы javax.xml.bind, а не классы org.glassfish.jaxb. Добавление записи пути к классам в файл ant build.xml только что привело к ошибке создания задачи или ввода classpathentry.
Я должен добавить, что я работаю в определенной части сборки, которая запускает wsimport.sh для данного файла WSDL. Я отредактировал этот сценарий оболочки, чтобы использовать исполняемый файл Java Java 11, а не Java 8. Сценарий успешно вызывается ant с использованием файла build.xml (при запуске make), но на этапе wsimport.sh я получаю ошибку Java NoClassDefFound. Я выполняю отладку, запуская wsimport.sh автономно в командной строке.
Подробнее здесь: https://stackoverflow.com/questions/791 ... on-datasou