public class Test{
public void static void main(String[] args){
A a = new A();
a.setValue(10);
System.out.println(a.getValue());
}
}
一. 首先配置java jdk环境
包括环境变量,方便能在任何目录下使用java命令;
二. 代码的编译和运行
对于写Java程序而言,我们主张源文件与class文件都有相同的目录结构,这样不仅会方便代码的组织管理,也使得在编译以及运行Java程序时少犯错误。
举个例子,在src/main目录下新建如下2个类文件;
class A{
private int value;
public A(){
value = 0;
}
public void setValue(int var){
value = var;
}
public int getValue(){
return value;
}
}
public class Test{
public void static void main(String[] args){
A a = new A();
a.setValue(10);
System.out.println(a.getValue());
}
}
注意这2个类文件中没有添加package说明,
编译:
在src/main/ 下,执行javac Test.java,会发现当前目录下生成了Test.class 和A.class
运行:
继续在src/main/ 下,执行 java Test,终端会输出>10,即运行成功
问题:找不到或无法加载主类:
1.不添加package语句,如上,在src/ 目录下,
执行java Test,会报错>错误: 找不到或无法加载主类 main.MyTest
执行 java -classpath main/ MyTest 成功
执行 java main.MyTest,会报错>错误: 找不到或无法加载主类 main.MyTest
2. 对比,在上述2个java文件中都加入,package main;
重新编译,然后再回到src目录下运行 java main.MyTest 成功
总结:
如果Java文件中
没有package语句,则这两个文件同属于一个默认包中(没有显示写package的文件都是属于默认包的)。
Java类发现规则
要想成功编译java文件,需要有classpath和包名的共同配合。
类发现规则:class文件所在目录 = classpath + '\' + 包名中的'.'全变成’\'
运行指定了package程序时,需要显示的写出其包名,即:java packagename.classname,其遵循与class文件一样的寻找规则,即在classpath+packagename中'.'变成'\' 所表示的路径下能够找到相应的classname所指的class文件。
elipse或者IDEA等开发工具中均有classpath配置,开发人员可以配置修改也可以使用默认生成的,我发现一般都默认从src/目录下开始查找类;