web-dev-qa-db-fra.com

Configurez correctement Java 9 en tant que SDK dans Intellij IDEA sous Linux en raison de la nouvelle structure de dossiers)

Avant de me radier, veuillez considérer qu'aucune de ces réponses ne répond à ma question:


Dans IntelliJ IDEA 2017.2.6, la tentative d'ajouter JDK9 en tant que SDK passe mais ne fonctionne pas car les chemins de classe finissent vides. Étapes à suivre pour reproduire:

  1. Ouvrez la boîte de dialogue "Ajouter un nouveau SDK"
    (allez dans Paramètres du projet> Projet> SDK du projet> Nouveau> JDK)
  2. Sélectionnez JDK 9
    select jdk dialog
  3. Passes, mais si vous regardez sous SDK> les chemins de classe JDK9 sont vides et vos erreurs de code en raison de classes de base introuvables. Voir l'image:
    no classpaths

Dans IntelliJ IDEA 2017.3 EAP, vous obtenez une erreur indiquant que les classes JDK sont introuvables. Voir les images ci-dessous:

  1. Ouvrez la boîte de dialogue "Ajouter un nouveau SDK"
    (allez dans Paramètres du projet> Projet> SDK du projet> Nouveau> JDK)
  2. Sélectionnez JDK 9
    select jdk dialog
  3. Devrait passer, mais produit une fenêtre contextuelle d'erreur
    jdk error popup

La compilation en ligne de commande de l'exemple HelloWorld avec jdk9 fonctionne comme prévu.

EDIT: Trouvé un quasi-doublon: Intellij IDEA 2017.2 ne peut pas ajouter openjk 9 sur Linux Mint 18 . Différences clés:

  • Version Linux: ils utilisent Mint 18, et j'utilise Debian Stretch.
  • OpenJDK est le dernier du repo au moment de la rédaction: 9 ~ b181-4 ~ bpo9 + 1. Même s'il s'agit de la même version, cela ne fonctionne toujours pas dans mon cas.

EDIT: Un autre doublon possible: l'idée intellij ne voit pas Java 9 classes standard

Je n'ai cependant pas compris la réponse des commentaires. J'ai essayé de définir des noms différents pour JDK (9 et 1.9) mais il ne montrait toujours pas les modules au lieu des chemins de classe et les chemins de classe restaient vides.

29
anon2234

Le paquet binaire Debian actuel openjdk-9-jre-headless 9 ~ b181-4 contient une compilation incorrecte lib/jrt- Fichier fs.jar .
Il y a 2 problèmes classés séparément à la fois idée youtrack et aussi buntu launchpad .

Comme il est indiqué ici :

Raison probable:
Les classes dans lib/jrt-fs.jar ont été compilées par Java 9 avec les options "-source 8"/"target 8". Elles doivent être compilées avec "--release Option 8 "à la place (ou par Java 8)

Une solution temporaire peut remplacer /usr/lib/jvm/Java-9-openjdk-AMD64/lib/jrt-fs.jar par celle de Oracle JDK.
Vous pouvez également essayer de recompiler la source openjdk-9 en utilisant l'option conseillée "-- release 8".

Quoi qu'il en soit, je conseille de voter sur ce problème sur le lien ci-dessus pour attirer plus l'attention de l'équipe de développement.

28
Kayvan Tehrani

Utilisez Oracle Java au lieu d'OpenJDK pour l'instant. Vous pouvez le récupérer dans via le référentiel de WebUpd8 .

Sudo add-apt-repository ppa:webupd8team/Java &&
Sudo apt-get update &&
Sudo apt-get install Oracle-Java9-installer

Il ne semble pas que cela fonctionnera avec OpenJDK, donc si vous voulez jouer avec le dernier et le meilleur Java, ce sera la façon de le faire pour l'instant. Sinon, d'après ce que j'ai vu, vous avez fait cela correctement et une fois que cela sera réellement corrigé, cela fonctionnera très bien.

5
Makoto