Создание теста JUnit в NetBeans для использования со старой версией Java

Я разрабатываю программное обеспечение Java с помощью IDE NetBeans 6.5 (сборка 090226) с Maven (4.0.5) с использованием Java (1.6.0_06) в системе Fedora.

Я делаю обновление для некоторого устаревшего кода, и я хотел создать для него тест (используя JUnit). Код используется с Java 1.5. Чтобы предоставить тестовые данные самым быстрым и простым способом, я хотел реализовать простой фиктивный набор данных, расширив интерфейс ResultSet. Проблема в том, что несмотря на то, что мой проект настроен для сборки и тестирования с помощью JDK 1.5:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
 <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <fork>true</fork>
    <executable>/usr/java/jdk1.5.0_14/bin/javac</executable>
    <compilerVersion>1.5</compilerVersion>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <!-- snip some non-jvm configuration -->
    <jvm>/usr/java/jdk1.5.0_14/bin/java</jvm>
    <forkMode>once</forkMode>
  </configuration>
</plugin>

редактор по-прежнему хочет сделать мой класс абстрактным, поскольку считает, что мне не хватает методов, существующих в Java 1.6 ResultSet, но использующих классы, которых нет в Java 1.5 (NClob, RowId и SQLXML).

Мои подключаемые модули компилятора, похоже, настроены правильно — я могу успешно построить и запустить этот тест JUnit, но все мое исходное дерево показывает значки ошибок (эффективно маскируя любые настоящие ошибки). Если я использую функцию «Перейти к источнику» (или «Перейти к объявлению») в операторе импорта ResultSet, это приводит меня к исходному zip-архиву Java 1.6, но метод отвечает «Невозможно выполнить переход к источнику здесь».

Что я пропустил? Как заставить окно редактора NetBeans распознавать, что этот код использует JDK версии 1.5, а не JDK, с которым был запущен NetBeans?

Тиа, Илан


person Ilane    schedule 01.11.2012    source источник


Ответы (2)


Использование подключаемого модуля компилятора Maven не влияет на настройки компилятора вашего проекта Netbeans.

Загляните в свойства проекта, там вы можете указать исходный/бинарный формат нужной вам версии. Но обратите внимание, что это не скроет методы, которые доступны только в версии платформы Java, установленной в вашей среде IDE (которая, скорее всего, будет 1.6 в наши дни). Это может быть проблематично, например, если конструктор IOException принимает причину и другие расширения API, которые были представлены в Java 1.6 или более поздних версиях.

Netbeans с радостью скомпилирует этот код при установке на 1.5, но он действительно не будет работать на JVM версии 1.5. Поэтому, чтобы быть абсолютно уверенным, вам также необходимо установить 1.5 JDK, добавить его в список платформ (Инструменты -> Платформы) и использовать его для компиляции вашего проекта. В качестве дополнительного бонуса при использовании правильного JDK NetBeans будет помечать такие вещи, как отсутствующий конструктор IOException прямо в окне редактора.

person andih    schedule 01.11.2012
comment
Мой параметр Source/Binary для моего проекта уже установлен на 1.5 (я не знал, чтобы проверить его, но он уже был установлен), а платформы Java уже включают мою платформу 1.5. Но окно редактора все равно идет к исходникам 1.6. Итак, вы говорите, что нет другого способа заставить IDE использовать 1.5 для редактора Java IDE, кроме запуска NetBeans с 1.5? - person Ilane; 01.11.2012
comment
Вам не нужно запускать Netbeans с определенной версией. Вы можете изменить платформу JDK/версию вашего проекта, выбрав нужную платформу в настройках сборки/компилятора проекта. Вы также можете проверить это, развернув папку Java Dependencies вашего проекта Maven. Он должен отображать ваш JDK 1.5, а не JDK 1.6 или JDK по умолчанию. Если отображается JDK 1.6, перейдите в «Свойства проекта» и измените платформу сборки/компиляции на JDK 1.5, после чего в вашем проекте больше не должно быть ссылок на JDK 1.6. - person andih; 01.11.2012
comment
Разве настройка Source/Binary на 1.5 не выбирает нужную платформу? Это уже было установлено на 1,5. Находятся ли настройки сборки/компилятора проекта в другом месте? Я искал и нигде в моей среде IDE не нашел папки с названием Java Dependencies - возможно, вы имеете в виду версию, отличную от 6.5? У меня есть и 1.5, и 1.6, указанные в моем списке платформ Java. Версия 1.6 указана по умолчанию (разве это не запуск netbeans с 1.6?). Единственная известная мне конфигурация для конкретного проекта находится в файлах pom.xml, а ссылки на java там перечислены в моем исходном сообщении. Можете быть более конкретными? - person Ilane; 01.11.2012

Добавление «profile.xml» (параметр меню в разделе «Файлы проекта» в основной проект со следующим, устранило мою проблему:

<profiles>
  <profile>
    <id>netbeans-private</id>
    <properties>
      <netbeans.hint.jdkPlatform>JDK_1.5</netbeans.hint.jdkPlatform>
    </properties>
  </profile>
</profiles>

Спасибо andih за его ободряющую поддержку, которая заставила меня искать ответ.

Илан

person Ilane    schedule 01.11.2012