目前,我正在研究如何从命令行编译Java。这是我得到的:

这是我得到的:

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

你好,世界:

包a_pack;

导入b_pack.Inner;
导入b_back.Inner2;
导入java.util.ArrayList;
导入java.util.Iterator;

公共(public)类HelloWorld {

公共(public)静态void main(String [] args){

System.out.println(“H​​ello,World”);

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

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

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

迭代器itr = myArray.iterator();
同时(itr.hasNext())
{
System.out.println(itr.next());
}

}

}

内部java

包b_pack;

内部公共(public)类{

公共(public)无效myInner(){
System.out.println(“内部方法”);
}

}

Inner2.java

包b_pack;

公共(public)类Inner2 {

公共(public)无效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:软件包java.nio.file不存在
导入java.nio.file.Files;
^
1个错误

这是什么故事?为什么有些Java软件包很好,而有些却不行呢?

最佳答案

Java NIO是Java 7中引入的。早期版本的JDK的编译器会将任何包含这些NIO类的代码都塞进去。您需要升级到JDK 7或更高版本。

09-26 09:32