Java 安装
Java 的下载
Oracle官网 -> download -> Java -> JDK -> 选择版本
Java 的安装
解压
配置环境变量
Java 编译
不带包名的类如何编译
1 | public class A { |
1 | 编译 |
带包名的类如何编译
我们发现会编译成功,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 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cheng Xudong's blog!
评论
Va