2009-07-17 5 views
2

Je développe une application Java sur deux ordinateurs différents (même code source) qui ont différentes versions de JDK. Existe-t-il un moyen de spécifier la version JDK dans le code source afin qu'un IDE (par exemple NetBeans) compile le code source de la même manière sur les deux machines?La version du JDK peut-elle être spécifiée dans le code source?

Un de mes ordinateurs a JDK5 et l'autre a JDK6. Sous 5, jdbc-interface ne supporte pas certaines méthodes (par exemple NClob, XML ...) qui sont disponibles en 6, donc le code qui est compilé sur la machine 6 fonctionne alors que le code compilé sur la machine 5 ne le fait pas. En ce moment, je dois commenter 6 choses seulement lorsque je travaille sur la machine.

Répondre

7

Pas dans le code source. Vous voulez configurer votre IDE pour compiler en utilisant un Java 5 JDK. Vous pouvez le faire en installant un Java 5 JDK à côté de Java 6 JDK, et en spécifiant cela (qui dépend de l'EDI). Si vous utilisez Ant, vous pouvez également spécifier la version Java dans la tâche javac.

1

Vous aurez toujours régressiez et le code contre la plus basse version du JDK - dans votre cas, vous ne pouvez pas utiliser les fonctionnalités introduites dans la version 6. JDK

Comme Brian a dit, il est probablement plus sûr si vous travaillez avec l'EDI configuré pour utiliser le même JDK (version 5 dans votre cas).

Vous pouvez passer à une version d'exécution particulière en utilisant l'argument version, mais cela ne vous aidera probablement pas. Notez également que la compilation de votre code sur la version 6 et sur la version 5 entraînera une erreur d'exécution en raison des versions de classe incompatibles, alors que vous avez essayé d'utiliser des méthodes JDBC qui n'existaient pas dans l'ancienne version.

0

Dans NetBeans vous avez un clic droit sur les propriétés du projet puis la version source si vous avez JDK 1.6, vous pouvez le construire avec les versions précédentes

+0

Cela ne vous aidera pas si vous utilisez des méthodes API qui n'existent pas dans la version précédente. –

4

Ne pas trop compliquer la question ... installer la même version de JDK sur tous les les machines, et définissez vos IDE pour utiliser cette version. Ignorer les autres versions

+0

C'est la réponse évidente ... peut-être un peu trop évident ... J'imagine que la plupart des gens qui se retrouvent à ce poste le font parce qu'ils n'ont pas de privilèges d'installation sur leurs machines. – Pops

2

Je sais que cela a été répondu, mais si vous ne pouvez pas mettre à jour le 1,5 à 1,6 tout ce que vous devez faire est de définir l'ide qui utilise 1.6 pour compiler la « compatibilité source » de 1,5

Il n'y a pas besoin pour installer le 1.5 sur la machine qui tourne sous 1.6 parce que le JDK est rétrocompatible.

Le paramètre dans Eclipse est Préférences> Java> compilateur

0

Ce que vous devez faire est de spécifier la compatibilité source à quelque chose qui est pris en charge par les deux JDKs (< = 1,5). Il peut être judicieux d'aller au-dessous de 1,5 si, par exemple, l'application que vous construisez peut être déployée dans un environnement où seul Java 1.3 est installé.

Je sais que c'est possible dans Eclipse, mais malheureusement, je ne suis pas familier avec NetBeans, mais je suis sûr que ce serait aussi possible.

Si c'est de l'aide, voici comment vous le faites si vous exécutez simplement javac à partir de la console (en supposant que vous voulez 1.5 comme niveau de base):

javac -source 1.5 ... 

Ceci est également possible en tant que plug configuration dans un POM Maven, si vous utilisez Maven (que je comprends NetBeans a un excellent support pour). Voici comment vous feriez ça (de 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> 

Et comme Brian Agnew souligne, Ant possible aussi.

0

Le problème est: avez-vous besoin de prendre en charge JVM 1.5? Si c'est le cas, votre code devrait être entièrement compatible avec la version 1.5 (ce qui ne semble pas être le cas). Si ce n'est pas le cas, il suffit de mettre à jour votre JVM dans toutes vos machines (comme déjà suggéré) à la même version JVM (et n'oubliez pas la version mineure: 1.6.0_03! = 1.6.0_14).

Questions connexes