2013-05-16 4 views
6

현재 커맨드 라인에서 java를 컴파일하는 법을 배우고 있습니다. 여기에 내가있어 무엇 :패키지 java.nio.file가 존재하지 않습니다.

 
/myjava/compile.cmd 
/myjava/src/a_pack/HelloWorld.java 
/myjava/src/b_pack/Inner.java 
/myjava/src/b_pack/Inner2.java 
/myjava/bin 

하여 HelloWorld :

 
package a_pack; 

import b_pack.Inner; 
import b_back.Inner2; 
import java.util.ArrayList; 
import java.util.Iterator; 

public class HelloWorld { 

    public static void main(String[] args) { 

     System.out.println("Hello, World");  

     Inner myInner = new Inner(); 
     myInner.myInner(); 

     Inner2 myInner2 = new Inner2(); 
     myInner2.myInner(); 


     ArrayList myArray = new ArrayList(); 
     myArray.add(1); 
     myArray.add(2); 
     myArray.add(3); 

     Iterator itr = myArray.iterator(); 
     while (itr.hasNext()) 
     { 
      System.out.println(itr.next()); 
     } 

    } 

} 

Inner.java

 
package b_pack; 

public class Inner { 

    public void myInner() { 
     System.out.println("Inner Method"); 
    } 

} 

Inner2.java

다음

내가있어 무엇

 
package b_pack; 

public class Inner2 { 

    public void myInner() { 
     System.out.println("SecondInner"); 
    } 

} 

나는 이것을 javac -d bin -sourcepath -src src/a_pack/HelloWorld.java 으로 컴파일 중이며 정상적으로 작동합니다.

HelloWorld.java가 다른 패키지를 import 문으로 참조하기 때문에 javac가 실행되고 컴파일됩니다. 그리고 모든 Java 패키지에 대해 javac가 내부적으로 또는 다른 것을 가지고 있다고 생각합니다.

어쨌든 - 내가 HelloWorld.java

에 다음 수입 라인을 추가하는 경우

import java.nio.file.Files;

는 이야기가 여기에 무엇

 

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 

실패? 왜 일부 Java 패키지는 좋고 그렇지 않은 패키지입니까?

+2

NIO는 Java 7에서 소개되었습니다. 사용중인 Java 버전은 무엇입니까? – Reimeus

+0

@Reimeus javac를 포함하고있는 JDK는 jdk1.6.0_32입니다. – dwjohnston

+0

답변이 있습니다. JDK 7로 업그레이드해야합니다. – Reimeus

답변

14

Java NIO 다음 NIO 클래스가 포함 된 코드를 망설 것이다 자바의 JDK의 이전 버전 (7) 컴파일러를 도입했다. JDK 7 이상으로 업그레이드해야합니다.

0

파일 클래스는 정적 메서드로만 구성됩니다. 이것이 가져올 수없는 이유인지 확실하지 않지만 가져올 필요가 없습니다.

편집 : 지정한 패키지가 import java.nio.files.Files라는 것을 깨달았습니다. 실제 패키지는 java.nio.file.Files입니다. http://docs.oracle.com/javase/7/docs/api/java/nio/file/package-summary.html

+0

내 사과, 그건 내 부분의 오타 였어. 문제는 여전히 남아 있습니다. – dwjohnston

1

이 문제점을 발견했으며 내 JAVA_HOME 환경 변수가 여전히 이전 Java 1.6을 가리키는 것을 발견했습니다. 실행 javac -version

  • java -version는, 그 환경 변수를 제거에 좋은 컴파일 된 것을 1.7

등 ...

을 보였다 실행 1.7

  • 을 보였다. 당신은 OSX에있는 경우, 다음이 사용하는 JDK를 확인

  • 3

    ...

    $ cd /System/Library/Frameworks/JavaVM.framework/Versions 
    $ readlink /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK 
    /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 
    $ javac -version 
    javac 1.7.0_25 
    

    CurrentJDK이 잘못된 버전을 가리키는 볼 수 있듯이. 심볼릭 링크를 대체하여 문제를 해결할 수 있습니다.

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

    신용 dtrace를 실행의 5 분 저를 저장 this blog post로 이동합니다.

    관련 문제