2013-05-16 12 views
6

मैं इस समय काम कर रहा हूं कि जावा को कमांड लाइन से कैसे संकलित करना है। यहाँ मैं क्या कर लिया है:पैकेज 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 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 

क्या कहानी यहाँ है के साथ विफल हो? कुछ जावा पैकेज क्यों अच्छे हैं और कुछ नहीं?

+2

एनआईओ जावा 7 में पेश किया गया था। जावा का कौन सा संस्करण उपयोग कर रहा है? – Reimeus

+0

@ रीमेमस जेडीके मैं इसका उपयोग कर रहा हूं जिसमें javac jdk1.6.0_32 है। – dwjohnston

+0

आपका उत्तर है। आपको जेडीके 7 में अपग्रेड करना होगा। – Reimeus

उत्तर

14

Java NIO जावा 7 में पेश किया गया था। जेडीके के पुराने संस्करणों से कंपाइलर्स इन एनआईओ कक्षाओं वाले किसी भी कोड पर बाउल करेंगे। आपको जेडीके 7 या उच्चतर में अपग्रेड करना होगा।

0

फाइल श्रेणी में केवल स्थिर विधियां हैं। मुझे यकीन नहीं है कि यही कारण है कि इसे आयात नहीं किया जा सकता है, लेकिन इसका मतलब यह है कि इसे आयात करने की आवश्यकता नहीं है।

संपादित करें: बस आपके द्वारा निर्दिष्ट पैकेज को महसूस किया गया है 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 पर्यावरण चर अभी भी पुराने जावा 1.6 को इंगित कर रहा था।

  • रनिंग javac -version से पता चला है 1.7
  • रनिंग java -version दिखाया 1,7

आदि ...

कि वातावरण चर को हटाने पर, ठीक संकलित बातें।

3

आप पर OSX हैं, तो JDK यह उपयोग कर रहा है की जाँच ...

$ 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 

क्रेडिट this blog post जो मुझे dtrace चलाने का 5min बचाया को जाता है।

संबंधित मुद्दे