Java 包、包的编译

Java

Java 采用包的概念来对相关的类进行管理。

包可以避免名称冲突,并且通过包名进行分类后,代码的维护性会有所提高。

包本质上就是一个个文件夹

Java 包、包的编译

以上都是 Java 的内置包,除了内置包,Java还支持自定义包。

Import

import 可以从指定的包中导入指定的类,如:

import java.util.Scanner;

或导入指定的包内所有内容

import java.util.*;

同个包下的类直接访问即可,无需导入。

Package

package用于声明该代码存在于哪个包的那个位置,使用 Javac编译时 .class就会放在相对应的位置

一个类中只能声明一次 package且只能在第一行代码声明

└── root
  └── pack_name
    └── MyPackClass.java

如:

package pack_name;

public class MyPackClass {
    String str = "This is My Package Class";
}

包的命名规则及规范

命名规则:

  • 只能包含数字、字母、下划线、 .,不能以数字开头,不能是关键字或保留字

命名规范:

  • 一般是 com.公司名称.项目名称.业务模块名如:
  • com.sina.crm.user 用户模块
  • com.sina.crm.order 订单模块
  • com.sina.crm.utils 工具类
  • 其文件分布格式是这样的:
└── com
  └── sina
    └── crm
      └── user
        └── ***.java...

      └── order
        └── ***.java
      └── utils
        └── ***.java

编译

发现很多教学,都是直接教使用 IDE进行编译,并没有对手动编译进行说明,但是作为一名初学者,现阶段不建议使用集成度过高的 IDE,你可以不使用手动编译,但你必须知道如何手动编译

对于使用了自建包的代码,有必要知道如何在不使用 IDE 的情况下手动编译

编译时需要 javac 从包开始直到源文件位置 如: com/sina/user/***.java

如果不指定编译后的位置那么会将这个源文件使用到的所有包都进行编译,并存放到对应的源文件路径下,如下图

Java 包、包的编译

如果使用 javac -d 指定了路径这会在指定的路径生成与源文件一样的包,里面存放编译好的 .class 文件

使用 java -d编译需要手动编译每一个包里的类如:

CLASS_PATH 为你要将编译好的 .class 文件储存的路径
java -d CLASS_PATH com/user/Test.java com/xiaoming/Dog.java com/xiaoqiang/Dog.java

这样有些麻烦

如果你是 Linux系统,可以使用 find命令,找出所有是 .java后缀的路径,然后将输出重定向到一个文件,我们再使用 javac -d CLASS_PATH @java_path.list这是另外一种解决思路,如:

先进入到存放包的目录
cd 存放包的上一级目录
find ./ -name *.java > java_path.list
java -d CLASS_PATH @java_path.list

图解:

进入到存放包的目录

Java 包、包的编译

寻找 .java源代码路径

Java 包、包的编译

这就是我们找到的源代码路径

Java 包、包的编译

开始编译

Java 包、包的编译

可以看到,编译完成后在你指定存放类文件的路径下会生成一个目录,我们查看一下这个目录

Java 包、包的编译

可以看到,它与我们原文件的储存样式是一模一样的

这是原文件

Java 包、包的编译

尝试运行

我们使用 java -classpath指定我们存放类文件的路径,再在后面选择你要运行的类文件

Java 包、包的编译

Original: https://www.cnblogs.com/jwyqn/p/16280606.html
Author: 假文艺青年。
Title: Java 包、包的编译

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570030/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Vue脚手架配置代理

    方法一:在vue.config.js中添加如下配置 devServer: { proxy: "远程服务器地址及端口号", } 说明: 优点:配置简单,请求资源时…

    Java 2023年6月13日
    076
  • 如何搭建一个WEB服务器项目(三)—— 实现安卓端联网登录

    安卓端调用服务器登录函数进行验证登录 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟。欢迎各位大佬来评论区提出问题或者是指…

    Java 2023年6月8日
    0101
  • 常用Linux命令之文件相关命令(一)

    一、文件显示命令 1、cat命令: cat命令连接文件并打印到标准输出设备上,经常用来显示文件的内容,相当于DOS下的type命令 cat命令的一般格式: cat [选项] 文件名…

    Java 2023年6月8日
    0134
  • 同步锁笔记

    CAS(Compare and Set) 无锁算法,不使用锁的情况下实现多线程之间的变量同步,拿变量的原值和内存中的值进行比较,如果相同,则原值没有被修改过,那么就将原值修改为新值…

    Java 2023年6月7日
    076
  • 微服务SpringCloud之注册中心Consul

    Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更&#822…

    Java 2023年5月30日
    0116
  • 一个注解@Recover搞定丑陋的循环重试代码

    使用背景 在实际项目中其中一部分逻辑可能会因为调用了外部服务或者等待锁等情况下出现不可预料的异常,在这个时候我们可能需要对调用这部分逻辑进行重试,代码里面主要就是使用for循环写一…

    Java 2023年6月5日
    082
  • 《Java编程思想》读书笔记(一)

    很早之前就买了《Java编程思想》这本书,初学时看这本书看的云里雾里的,实在费劲,就放在一边垫桌底了。感觉这本书是适合C/C++程序员转行到Java学习的一本书,并不适合零基础的初…

    Java 2023年6月5日
    083
  • Java多线程并发编程一览笔录

    线程是什么? 线程是进程中独立运行的子任务。 创建线程的方式 方式一:将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法方式二:声明实现 Runnab…

    Java 2023年5月29日
    075
  • Java基础学习总结

    写的这个博客是学习B站狂神说的Java教学视频的学习记录,记录了重点知识以及以前易混淆理解的知识点。本博客可能缺少部分基础知识点,适合像我一样学习Java过程中曾经半途而废的学生。…

    Java 2023年6月9日
    091
  • Oracle 相关的专业术语 说明

    2PC: (See two-phase commit) ACID:The properties of a reliable transactional system: Atomic…

    Java 2023年5月30日
    061
  • Spring mvc源码分析系列–前言

    距离上次写文章已经过去接近两个月了,Spring mvc系列其实一直都想写,但是却不知道如何下笔,原因有如下几点: 现在项目开发前后端分离的趋势不可阻挡。Spring mvc这一套…

    Java 2023年6月8日
    078
  • spring上传文件

    本文将说明spring上传文件如何配置,以及从request请求中解析到文件流的原理 #添加依赖 主要用来解析request请求流,获取文件字段名、上传文件名、content-ty…

    Java 2023年6月9日
    090
  • 怎么样写出可读性强的文章

    1.你的写作听起要自然 大声朗读自己的草稿,听起来不通顺的地方修改直到读起来感到通顺。 2.力求简洁 简介并不是说不可以长篇大论。 如何做到简洁 ① 去除不必要的词,或不重要的引用…

    Java 2023年6月5日
    088
  • elasticsearch 7.7.0 最新版+Java High Level REST Client测试

    服务端:elasticsearch 7.7.0 Docker部署 客户端:spring boot +thymeleaf+Java High Level REST Client 7….

    Java 2023年5月29日
    092
  • Java编辑器的下载和应用——IDEA

    IDEA下载 (1)搜索 IntelliJ IDEA,选择电脑适合的版本下载(跟着指示一步步安装就好了) (2)安装完成后打开,创建一个空项目(在之后的学习中可把所有的代码放这里,…

    Java 2023年6月6日
    052
  • 消息的种类与消息队列的处理方式

    消息的种类 1.1 按照发送的特点分 同步消息 异步消息 单向消息 举例: 同步消息 我去小吃店要了一套煎饼果子,在门口等了十分钟,煎饼果子好了老板告诉我让我取餐。 异步消息 我去…

    Java 2023年6月14日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球