• java基础详解1----package引入&CLASSPATH


    一、对于公共类(public),java源码文件名一定要与类名一致,否则会报错

    D:\project\helloWorld>javac hello.java
    hello.java:1: 错误: 类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明
    public class HelloWorld {
    ^
    1 个错误

    二、一个java文件中只能有一个公共类,也可以新加默认(default)类型的类

    三、当一个文件中只有默认类的时候,类名可以不与文件名相同,文件中可以有多个默认类

    四、同一个目录下的源文件属于同一个包(package)

    五、源码文件可以不命名包,但是不适合在项目中使用,只用来简单测试

    HelloWorld.java

    //package main;
    public class HelloWorld {
    
        public static void main(String args []){
    
            System.out.println("hello world");
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    将package注释掉,在当前目录下编译并运行

    javac HelloWorld.java
    java HelloWorld
    
    • 1
    • 2

    六、包(package)引入

    1、包名要和源文件的物理路径一致,即包名是com.hello,那么该包中的所有源文件都要在com/hello路径下,这引出了另一个事实,即同一个路径下的所有源文件都属于同一个包。

    2、import 只会引入单个包成员或者包的全部内容

    import graphics.Rectangle;
    import java.awt.*;
    
    • 1
    • 2

    七、javac编译源文件时包是如何引入的?

    java -help
    PS C:\Users\love1\Documents\technology\java\project\hello> javac -help
    用法: javac <options> <source files>
    其中, 可能的选项包括:
      -g                         生成所有调试信息
      -g:none                    不生成任何调试信息
      -g:{lines,vars,source}     只生成某些调试信息
      -nowarn                    不生成任何警告
      -verbose                   输出有关编译器正在执行的操作的消息
      -deprecation               输出使用已过时的 API 的源位置
      -classpath <路径>            指定查找用户类文件和注释处理程序的位置
      -cp <路径>                   指定查找用户类文件和注释处理程序的位置
      -sourcepath <路径>           指定查找输入源文件的位置
      -bootclasspath <路径>        覆盖引导类文件的位置
      -extdirs <目录>              覆盖所安装扩展的位置
      -endorseddirs <目录>         覆盖签名的标准路径的位置
      -proc:{none,only}          控制是否执行注释处理和/或编译。
      -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
      -processorpath <路径>        指定查找注释处理程序的位置
      -parameters                生成元数据以用于方法参数的反射
      -d <目录>                    指定放置生成的类文件的位置
      -s <目录>                    指定放置生成的源文件的位置
      -h <目录>                    指定放置生成的本机标头文件的位置
      -implicit:{none,class}     指定是否为隐式引用文件生成类文件
      -encoding <编码>             指定源文件使用的字符编码
      -source <发行版>              提供与指定发行版的源兼容性
      -target <发行版>              生成特定 VM 版本的类文件
      -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
      -version                   版本信息
      -help                      输出标准选项的提要
      -A关键字[=]                  传递给注释处理程序的选项
      -X                         输出非标准选项的提要
      -J<标记>                     直接将 <标记> 传递给运行时系统
      -Werror                    出现警告时终止编译
      @<文件名>                     从文件读取选项和文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    javac javac 后直接根java源文件,在编译源文件的时候,对于所有引入的包会以当前路径为基准,去到该包对应的物理路径下去加载对应的成员。
    -classpath 或者 -cp 也可以指定基准路径

    八、java 如何运行程序

    C:\Users\love1\Documents\technology\java\project>java -help
    用法: java [-options] class [args...]
               (执行类)java [-options] -jar jarfile [args...]
               (执行 jar 文件)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    java 包名.类名 会以当前路径为基准,去到该包名对应的物理路径下去寻找对应的类,并以此路径为基准加载引入的其他类。

    九、设置CLASSPATH

    windows

    1、C:> sdkTool -classpath classpath1;classpath2…

    2、set CLASSPATH=classpath1;classpath2…

    3、C:> java -classpath C:\java\MyClasses;C:\java\OtherClasses …

    4、java -classpath C:\java\MyClasses\myclasses.jar utility.myapp.Cool

    5、java -classpath C:\java\MyClasses\myclasses.zip utility.myapp.Cool

    linux

    1、setenv CLASSPATH path1:path2 (unsetenv CLASSPATH)

    2、CLASSPATH = path1:path2:… && export CLASSPATH (unset CLASSPATH)

    3、java -classpath /java/MyClasses:/java/OtherClasses …

    4、java -classpath /java/MyClasses/myclasses.jar utility.myapp.Cool

    5、java -classpath /java/MyClasses/myclasses.zip utility.myapp.Cool

  • 相关阅读:
    @SpringBootApplication注解SpringBoot深度理解(课时八)
    Linux操作系统 - 从概念上认识进程
    桥接模式-C++实现
    单源最短路径(贪心算法)
    AutoJs学习-2048全自动
    12 项目采购管理
    C语言中常见的逻辑错误
    项目风险管理
    Linux之grep风骚用法
    【Mongoose笔记】HTTP 服务器
  • 原文地址:https://blog.csdn.net/qq_41768644/article/details/132815961