命令行编译java

十分惭愧,java学了有七八年了,现在才来写这个博客,但是相信正确的事情即使迟到也好过不到,希望借助博客可以帮助记忆。

单个java文件

这个相信大家都知道,只是为了结构明确。这里java会找到内部的main方法。必须是在文件名同名类下的main名public static void main(String[] 参数)方法才可以

public class user{public static void main(String[]  args){System.out.println("hello,world");}
}
javac user.java
java user

同一个文件夹下多个java文件

这里没有包的概念,也不需要在意javac编译的顺序,只需要能找到引用的类名同名的class文件或者java文件就可以编译通过

包管理

首先java的包管理利用了文件管理系统,在寻找包的时候会直接把包名中的“.”转换成“/”作为路径去寻找对应的文件,只要对应的文件名存在.class或者.java即可编译通过,没有特定的编译顺序的要求。

但是javac命令在编译字节码的时候,会根据包名去寻找依赖,并且是根据执行javac时候所在的路径为根目录去寻找对应的依赖,比如packages/user.java 有一个依赖:

import packages.package1.depen;

那么在javac的时候必须在package的父目录中执行 javac packages/user.java

如果直接在package的目录下执行:javac user.java就会报错:

error:packages.package1 does not exist

java命令,包管理的在java命令上的体现有两点:

  1. 在java命令去执行class的时候也会和javac一样去找依赖;
  2. java命令需要完全和想要执行的java文件自己给自己规定的跑名一致

重点说一下第二点,如果对java类规定了一个包名,则在使用java命令去运行字节码的时候必须完整的包名,然后java依然会根据包名去寻找java字节码,所以必须在对应的目录下执行java命令

比如 packages/user.java规定了自己的包名:

package packages;

那么执行user.class 就需要在packages的父目录执行,java packages.user

如果user.java不带上这一句,则需要在packages目录下执行java user。但是这里因为引用了depen所以在packages目录下java会找不到depen。

jar包

生成jar包

未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨境电商系统开发:开启全球贸易新纪元

随着全球电子商务的飞速发展,跨境电子商务已经成为了一种日益重要的贸易形式。跨境电商系统开发,为企业提供了全新的商业机遇,打开了全球贸易的新纪元。 跨境电商系统开发,旨在实现不同国家和地区之间的电子商务交易,促…

【机器学习】迁移学习

迁移学习:给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识,来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性,利用在源领域中学习到的知…

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(商品和购物车)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(商品和购物车) 商品热销排行 1 商品-创建数据表 1.使用use命令先选中store数据库。 USE store;2.在store数据库中创建t_product数据表。 CREATE TABLE t_product (id int(20) NOT …

Git开发实用技巧

文章目录 一图胜千言:

SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测

SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测 目录 SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-CNN-LSTM-selfAttention灰狼算法优化卷积长短…

中国加氢催化剂行业研究与投资前景报告(2023版)

内容简介: 炼油厂催化剂市场因类型、材料和地区而分散。不同的产品类型包括流化催化裂化(FCC)、烷基化、重整和异构化、加氢处理等。基于材料,产品分为沸石、金属、化合物等催化剂。钼、钒、镍、钴和其他贵金属和稀土金属属于用于金属基炼油…

介绍比特币上的 sCrypt 开发平台

最强大的基础设施和工具套件,可轻松构建和扩展您的 dApp 杀手级应用在哪里? 尽管比特币在小额支付、国际汇款和供应链管理等广泛用例中具有颠覆性潜力,但在推出 14 年后,我们还没有看到一款非常受欢迎并被主流采用的杀手级应用。 …

Java 从丑陋的典例代码来谈谈卫语句(guard statement)if else

最近在重构些老项目,发现了些比较典型的代码块。 想到这些常见的写法,可能初学者还是比较容易‘产出’的,所以决定拎出来说说。 实例: 可以看到,这是一个用于新增&修改前的一个名称检测是否重复的函数。 /*** 检测…

echart一键生成迁徙图

echart_move 介绍 echart迁徙图,选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标,如果想修改图标,将图片放到同一目录,如1.svg 代码修改为对应位…

这一次,Python 真的有望告别 GIL 锁了?

Python 中有一把著名的锁——全局解释器锁(Global Interpreter Lock,简写 GIL),它的作用是防止多个本地线程同时执行 Python 字节码,这会导致 Python 无法实现真正的多线程执行。(注:本文中 Pyt…

Controller 层代码就该这么写,简洁又优雅!

一个优秀的 Controller 层逻辑 说到 Controller,相信大家都不陌生,它可以很方便地对外提供数据接口。它的定位,我认为是「不可或缺的配角」。 说它不可或缺是因为无论是传统的三层架构还是现在的 COLA 架构,Controller 层依旧有…

DEM分析

一、实验名称: DEM分析 二、实验目的: 通过本实验练习,掌握DEM的建立与应用基本方法。 三、实验内容和要求: 实验内容: 利用ARCGIS软件相关分析工具及实验数据,创建DEM,并计算相应坡度的区…

webshell之编码免杀

Unicode编码 jsp支持unicode编码&#xff0c;如果杀软不支持unicode查杀的话&#xff0c;基本上都能绕过 注意这里的\uuuu00可以换成\uuuu00uuu...可以跟多个u达到绕过的效果 将代码&#xff08;除page以及标签&#xff09;进行unicode编码&#xff0c;并条件到<%%>标签…

sCrypt 在英国伦敦 Exeter 大学讲学

6月5日&#xff0c;sCrypt CEO晓晖和他的两位同事在英国伦敦Exeter大学举行了一场精彩的讲座。刘晓晖向听众们详细介绍了sCrypt智能合约开平台&#xff0c;并演示了如何使用sCrypt来开发基于比特币的智能合约。他用生动形象的语言&#xff0c;深入浅出地解释了这个领域复杂而又…

16、单例bean的优势

一、单例bean的优势 由于不会每次都新创建新对象所以有一下几个性能上的优势&#xff1a; 减少了新生成实例的消耗。新生成实例消耗包括两方面&#xff0c;第一&#xff0c;spring会通过反射或者cglib来生成bean实例&#xff0c;这都是耗性能的操作&#xff0c;其次给对象分配…

精通Nginx(18)-FastCGI/SCGI/uWSGI支持

最初用浏览器浏览的网页只能是静态html页面。随着社会发展,动态获取数据、操作数据需要变得日益强烈,CGI应运而生。CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与静态Web服务器交互的一个标准接口。它可以使外部程序处理浏览器送来的表单数据并对此作出…

24. 深度学习进阶 - 矩阵运算的维度和激活函数

Hi&#xff0c;你好。我是茶桁。 咱们经过前一轮的学习&#xff0c;已经完成了一个小型的神经网络框架。但是这也只是个开始而已&#xff0c;在之后的课程中&#xff0c;针对深度学习我们需要进阶学习。 我们要学到超参数&#xff0c;优化器&#xff0c;卷积神经网络等等。看…

17.Spring实例化bean方式的几种方式

Spring实例化bean方式的几种方式 构造器方式&#xff08;反射&#xff09;&#xff1b; 静态工厂方式&#xff1b; factory-method 实例工厂方式(Bean)&#xff1b; factory-beanfactory-method FactoryBean方式 Spring 三种实例化 bean 的方式比较 方式一&#xff1a;通…

C++封装dll和lib 供C++调用

头文件interface.h #pragma once #ifndef INTERFACE_H #define INTERFACE_H #define _CRT_SECURE_NO_WARNINGS #define FENGZHUANG_API _declspec(dllexport) #include <string> namespace FengZhuang {class FENGZHUANG_API IInterface {public:static IInterface* Cre…

Node——npm包管理器的使用

Node.js使用npm对包进行管理&#xff0c;其全称为Node Package Manager&#xff0c;开发人员可以使用它安装、更新或者卸载Node.js的模块 1、npm包管理器基础 1.1、npm概述 npm是Node.js的标准软件包管理器&#xff0c;其在2020年3月17日被GitHub收购&#xff0c;而且保证永…