java中java文件的各种编译过程:
A.java代码如示:
package mypack; //这句是包声明
public class A {
String name;
int age;
public void setName(String _name){
this.name =_name;
}
public void setAge(int _age){
this.age = _age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public static void main(String[] args){
A a = new A();
//a.setName("zs");
a.name="zs";
a.setAge(18);
System.out.println(a.getName()+a.getAge());
}
}
Test.java代码如示:
//package mypack1; 包声明
import mypack.A;
public class Test{
public static void main(String[] args){
A a = new A();
a.setName("zs");
//a.name="zs";
a.setAge(18);
System.out.println(a.getName()+a.getAge());
}
}
所有(A.java、Test.java、mypack文件夹)都在桌面目录下,此为背景。
1.编译的文件中导入了包:
此时要编译Test.java但是有导入,所以通常的javac Test.java会出现错误:
第一种编译方法:
使用javac命令的cp参数指定编译文件中导入包的位置 即告诉编译器我导入的这个包 你去哪儿找:
这里讲一下cp参数:
cp全称:classpath 作用是编译java文件(javac -cp)或者运行字节码文件class文件(java -cp)告诉编译器到哪儿找依赖或者说需要的类 (官方叫类路径)
第二种方法: 使用javac命令的d参数 参数意思是编译完了 放哪儿 -d 后面写的是目录 告诉编译器往哪儿放
例如:
因为编译的时候编译了*.java 所以也编译了A.java 而A.java中有包声明 所以mypack里也生成了mypack 那么\mypack\mypack里自然也有A.class
但是还没有这么简单:
要这样才能编译成功(目前还不是很明白为啥):
这里讲一下目录切换:
"." 代表当前目录 这也是为啥上面参数d后面有一个点和空格 即“. ”。
".."代表上一级目录 "\"(反斜杠)代表根目录 "d:"代表切换到D盘 余者同理。
2.编译带包声明的文件:
A.java就是带包声明的,首先:
编译成功但是无法运行class文件:
带有包声明的要用javac命令的d参数 :
详细补充:
相关理解:菜鸟