Можно ли указать версию JDK в исходном коде? - PullRequest
2 голосов
/ 17 июля 2009

Я занимаюсь разработкой приложения Java на двух разных компьютерах (с одинаковым исходным кодом), которые имеют разные версии JDK. Есть ли способ указать версию JDK в исходном коде, чтобы IDE (например, NetBeans) скомпилировал исходный код одинаково на обеих машинах?

На одном из моих компьютеров установлен JDK5, а на другом - JDK6. В возрасте до 5 jdbc-interface не поддерживает некоторые методы (например, NClob, XML ...), которые доступны в 6, поэтому код, скомпилированный на 6-м компьютере, работает, а код, скомпилированный на 5-м компьютере, - нет. Прямо сейчас я должен закомментировать материал только для 6 при работе на 5 машине.

Ответы [ 7 ]

7 голосов
/ 17 июля 2009

Нет в исходном коде. Вы хотите настроить IDE для компиляции с использованием Java 5 JDK. Это можно сделать, установив Java 5 JDK вместе с Java 6 JDK и указав его (который зависит от IDE).

В качестве альтернативы, если вы используете Ant, вы можете указать версию Java в задаче javac .

4 голосов
/ 17 июля 2009

Не усложняйте проблему ... установите одну и ту же версию JDK на все машины и настройте IDE для использования этой версии. Игнорировать другие версии.

2 голосов
/ 17 июля 2009

Я знаю, что на этот вопрос ответили, но если вы не можете обновить 1.5 до 1.6, все, что вам нужно сделать, это установить ide, использующий 1.6, для компиляции с «совместимостью исходного кода» 1.5

Нет необходимости устанавливать 1.5 на машине, на которой работает 1.6, потому что JDK обратно совместим.

Параметр в eclipse - настройки> Java> Компилятор

1 голос
/ 17 июля 2009

Вам всегда придется возвращаться к самой младшей версии JDK и кодировать ее - в вашем случае вы не сможете использовать функции, представленные в JDK версии 6.

Как сказал Брайан, возможно, безопаснее всего работать с IDE, настроенной на использование того же JDK (версия 5 в вашем случае).

Вы можете переключиться на конкретную версию среды выполнения, используя аргумент version, но это, вероятно, не поможет вам.

Также обратите внимание, что компиляция кода для версии 6 и работа с версией 5 вызовет ошибку времени выполнения из-за несовместимых версий классов, когда, как вы сказали, вы пытаетесь использовать методы JDBC, которых не было в более старой версии.

0 голосов
/ 17 июля 2009

Проблема в том, что вам нужна поддержка JVM 1.5? Если это так, ваш код должен быть полностью 1.5-совместимым (что, похоже, не так). Если нет, просто обновите JVM на всех ваших машинах (как уже было предложено) до той же версии JVM (и не забудьте минор версии: 1.6.0_03! = 1.6.0_14).

0 голосов
/ 17 июля 2009

Что вам нужно сделать, это указать совместимость источника с чем-то, что поддерживается обоими JDK (<= 1.5). Возможно, имеет смысл перейти ниже 1,5, если, например, создаваемое вами приложение может быть развернуто в среде, в которой установлена ​​только Java 1.3. </p>

Я знаю, что это возможно в Eclipse, но, к сожалению, я не знаком с NetBeans, но уверен, что это тоже возможно.

Если это поможет, вот как это сделать, если вы просто запускаете javac с консоли (при условии, что вы хотите 1.5 в качестве базового уровня):

javac -source 1.5 ...

Это также возможно в качестве конфигурации подключаемого модуля в Maven POM, если вы используете Maven (который, как я понимаю, NetBeans имеет отличную поддержку). Вот как ты это сделаешь (с http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html):

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.4</source>
          <target>1.4</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

И, как указывает Брайан Агнью, возможно и в Ant.

0 голосов
/ 17 июля 2009

В NetBeans вы щелкаете правой кнопкой мыши свойства проекта, а затем исходную версию, если у вас есть jdk 1.6, вы можете собрать его с предыдущими версиями

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