Java 的下载

Oracle官网 -> download -> Java -> JDK -> 选择版本

Java 的安装

解压

配置环境变量

Java 编译

不带包名的类如何编译

1
2
3
4
5
public class A {
public static void main(String[] args) {
System.out.println("abc");
}
}
1
2
3
4
# 编译
javac A.java
# 运行
java A

带包名的类如何编译

我们发现会编译成功,A.class 被编译到当前目录下,但是运行报错

原因分析:

java A - 有包的 java 程序,需要用完整的包名来执行

由于我们没有指定 classpath,javva 准备在当前路径下查找 A.class 来装载,找了一圈没发现(确实有个 A 类,但是 A 类的完全路径是 com.microwu.cxd.A,所以不是这个),报错找不到或者无法加载主类。

java com.microwu.cxd.A - 有包的 java 程序,文件路径中必须包含包名

jvm 看了一下有包,于是将包转换为路径,去 com/microwu/cxd 下找 A.class,没找到

解决办法:-d 让编译器以当前路径为基准,自动创建包路径。

1
javac A.class -d .

引入其他类

引入非自定义类 - 没问题

引入自定义类

1
javac -d . com/microwu/cxd/A.class

解决方法:首先,java 程序会将被引用的类也打包。

然后,如果类是互相引用并且不同包,一定按照包的路径放好,保持包定义和文件结构同步。

如果 B 在其他路径:

-classpath 指定包的上级目录

-cp 指定 .class 的目录,使用相对路径或者绝对路径都可以

通过 -cp 指定 .class 在哪个根目录下,然后从这个目录拼接上包路径来构成完整路径

1
javac -cp E:\\aa -d . mypack/A.java

https://blog.csdn.net/u011531425/article/details/80961628