7
votes

paquet java.nio.file n'existe pas

Je travaille sur la façon de compiler Java de la ligne de commande pour le moment. Voici ce que j'ai:

Voici ce que j'ai: p> xxx pré>

helloworld: p> xxx pré>

intérieur .java p> xxx pré>

inner2.java p> xxx pré>

Je compose ceci avec javac -d bin -sourcepath -src src / a_pack / helloworld.java code> Et cela fonctionne bien. P>

MAINTENANT Ma compréhension est que, parce que le helloworld.java fait référence aux autres forfaits de ses déclarations d'importation, alors Javac va et compose ceux-ci. Et je suppose que pour tous les forfaits Java, Javac les a en interne ou quelque chose de plus. P>

Quoi qu'il en soit - Si j'ajoute la ligne d'importation suivante à helloworld.java p>

import java.nio.file.files code>; p>

Il échoue avec p>


D:\.....\myjava>javac -d bin -sourcepath src src/a_pack/HelloWo
rld.java
src\a_pack\HelloWorld.java:8: package java.nio.file does not exist
import java.nio.file.Files;
                    ^
1 error


11 commentaires

Nio a été introduit dans Java 7. Quelle version de Java utilise?


@Reimeus Le JDK que j'utilise, contient Javac est JDK1.6.0_32.


Il y a votre réponse. Vous devez passer à JDK 7.


@Reimeus juste une clarification pour JDK vs Jre. Le Javac que j'utilise appartient à JDK1.6.0, et je défini explicitement l'emplacement du Javac.exe. Mais la version de Java (en utilisant Java -Version sur mon ordinateur est 1.7.0_07. La raison pour laquelle il échoue, car les colis ne sont pas dans le JDK?


Oui, jdk1.6.0 ne fera pas. Vous avez besoin du compilateur JDK 7. Votre Java est d'une autre installation qui convient à l'exécution de l'application.


Ok, alors quand j'utilise le JDK1.6.0 pour compiler mon code sans le package Nio - pourquoi ne compilez-t-il pas les packages Java (Java.utils) dans le dossier BIN? Quand je l'exécuterai plus tard, comment ça sait comment ou où les utiliser?


BTW Si vous soumettez votre premier commentaire comme réponse, je l'accepterai.


Le JDK & JRE 7 dispose des classes Nio dans leurs fichiers de jar d'exécution. Java 6 JDK n'a pas ces. S'il n'y a pas de dépendances ou de syntaxe Java 7, alors il y a JDK 6 va bien ...


Yup, donc si je devais le compiler avec un JDK7 mais que je l'exécute dans un JRE6, j'aurais une sorte d'erreur?


Seulement si vous utilisez l'une des nouvelles classes ou syntaxe introduites dans Java 7 ...


Cool, remerciements tas pour votre aide.


4 Réponses :


0
votes

La classe de fichiers est composée uniquement de méthodes statiques. Je ne sais pas si c'est pourquoi il ne peut pas être importé, mais cela signifie que cela n'a pas besoin d'être importé.

Edit: Il suffit de réaliser que le colis que vous avez spécifié est importe java.nio.files.files. Le package réel est java.nio.file.files; http://docs.oracle.com /javase/7/docs/api/java/nio/file/package-summary.html


1 commentaires

Mes excuses, c'était une faute de frappe de ma part. Le problème reste toujours.



16
votes

Java Nio a été introduit dans Java 7. compilateurs de Les versions antérieures de la JDK vont Baulk à n'importe quel code contenant ces classes Nio. Vous devez passer à JDK 7 ou plus.


0 commentaires

1
votes

Je suis tombé sur ce problème et j'ai trouvé mon Java_Home La variable d'environnement indiquait toujours à l'ancien Java 1.6.

  • Exécution Javac -Version a montré 1.7
  • Exécution Java -Version Montré 1.7

    etc ...

    En supprimant cette variable d'environnement, les choses ont bien compilé.


0 commentaires

3
votes

Si vous êtes sur OSX, vérifiez que le JDK utilise ... XXX PRE>

Comme vous pouvez le voir CurrentJDK code> pointe vers la mauvaise version. Vous pouvez résoudre ce problème en remplaçant le symbole symbolique. P>

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo ln -fs /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents CurrentJDK


0 commentaires