Миграция кода с JDK 1.5 на 1.6 - PullRequest
6 голосов
/ 02 апреля 2010

Какие шаги необходимо выполнить для миграции кода с JDK 1.5 до 1.6.

Шаги:

  1. Изменен патч сборки проекта как JDK1.6
  2. Изменен компилятор как 6
  3. Очистить и развернуть проект
  4. Я получил ошибку компиляции как
       *** ERROR ***: Thu Apr 01 05:17:06 PDT 2010    org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml
    Stack trace of nested exception:
    java.lang.ClassCastException: org.eclipse.jst.javaee.web.internal.impl.WebAppDeploymentDescriptorImpl cannot be cast to org.eclipse.jst.j2ee.webapplication.WebApp
        at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.War22ImportStrategyImpl.loadDeploymentDescriptor(War22ImportStrategyImpl.java:87)
        at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.War22ImportStrategyImpl.importMetaData(War22ImportStrategyImpl.java:81)
        at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.getDeploymentDescriptor(WARFileImpl.java:145)  



*** ERROR ***: Thu Apr 01 05:17:06 PDT 2010    org.eclipse.wst.validation.internal.core.ValidationException: CHKJ3000E: WAR Validation Failed: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml
        at org.eclipse.jst.j2ee.model.internal.validation.WarValidator.validateInJob(WarValidator.java:343)
        at org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator.validateInJob(UIWarValidator.java:111)
        at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:75)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Ответы [ 7 ]

15 голосов
/ 02 апреля 2010

В подавляющем большинстве случаев вам вообще ничего не нужно делать. Даже перекомпиляция не является строго необходимой.

Несколько несовместимостей, существующих между Java 5.0 и 6.0, описаны в JDK 6 Руководство по внедрению .

2 голосов
/ 02 апреля 2010

Код, который работал на Java 1.5, будет работать на 1.6 без каких-либо изменений (у вас не было никаких внутренних API-интерфейсов). Общедоступный Java-API всегда совместим с прямой трансляцией.

1 голос
/ 02 апреля 2010

Перекомпилируйте с новым JDK, проверьте предупреждения (возможно, некоторые классы или методы устарели), проверьте, работает ли приложение, как ожидалось.

0 голосов
/ 26 сентября 2014

Я исправил аналогичную ошибку, заменив:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
     version="2.4">

с:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">

Когда я сделал эту замену в web.xml, этот CHKJ3000E исчез.

0 голосов
/ 30 января 2013

Я сделал следующее, и он отлично работает

Changed the build Patch of Project as JDK1.6
Changed the Compiler as 6 
0 голосов
/ 02 апреля 2010

Это зависит от вашего приложения. Полагаю, что здесь приведен список новых функций 1.6, но весь ваш код должен работать нормально.

ссылка Java 1.6 функции

0 голосов
/ 02 апреля 2010

Загрузите и установите JDK 6. Обновите все переменные среды, такие как JAVA_HOME, JDK_HOME. Убедитесь, что ваша IDE указывает на новую библиотеку (большинство IDE сделает это автоматически, если перезапустить после обновления переменных среды). Обновите настройки проекта, чтобы использовать JDK 6 в вашей среде IDE для каждого проекта соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...