java javac 以及 javaw

article/2025/9/19 18:34:34

java javac 以及 javaw

  • 1.javac
  • 2. java 和 javaw

1.javac

一个java程序运行的流程:
源码->编译(.java->.class)->运行(.class->启动jvm)
javac 的目的就是编译 将.java变成.class 将高级编程语言变成字节码 字节码不是机器码我记得是java提供的一种实现独立于底层硬件之外的方法, 因为大部分机器的机器码都是不一样的如果编译成机器码将会高度依赖于底层硬件, 所以这里编译成字节码实现硬件无关.
接下来我们看一下 javac 的编译流程
在这里插入图片描述
其中这里面的蓝色为javac的对应的类 红色的部分是对应的产出物
编译完成后最后是给JVM用的字节码对应了我们上面说的. 至于上面的词法分析器语法分析器对应了javac中的哪些类 可以去看一下 https://blog.csdn.net/u011983531/article/details/49430153
这里我们提两个类:
com.sun.tools.javac.parser—读取java源文件并创建语法分析树的类
com.sun.tools.javac.tree—表示java语言的被标注的语法树的类. 最顶层的节点Tree.TopLevel表示源文件的内容(应该是JCTree.TopLevel)
总结一下:

  1. java 的运行过程是 源码->编译(.java->.class)->运行(.class->启动jvm)
  2. javac 是java的编译器 将 .java编译成.class 将高级语言编译成java JVM能看懂的字节码
  3. javac 在 jdk/lib/tool.jar 中的 /com/sun/tools/javac
    在这里插入图片描述
    在这里插入图片描述
    到这里有没有想起来配置环境变量的时候要在CLASSPATH中加入jdk/lib/tool.jar 是因为很多工具类都在里面 但是真正使得javac全局化的还是Path中添加的
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

有没有很奇怪一个毫不相关的路径怎么能使javac全局可见呢 进入bin之后找到了答案 下面是bin的截图
在这里插入图片描述
这里找到了 javac的可运行程序只有16KB因此应该是javac的快捷方式在bin下所以引入bin就实现了全局可见
这也是为什么java javaw javadoc等一系列命令在path中更改后都会变得全局可见, 但是正如之前说过的java 和 javaw不需要path这两条就能全局可见原因见Windows 10 配置 java 环境变量

2. java 和 javaw

在安装jdk后 电脑中会出现三个javaw,一个在jdk文件下的bin中,一个在jdk同目录的jre中,一个在windows/system32中,当然这三个目录中还有三个java.exe和javaws.exe。
那我们的程序会使用哪一个javaw来运行我们的程序呢。如果程序的配置文件中可以指定的,就用指定的。
使用的就是我们在环境变量中配置的,path下的,顺序靠前的那一个bin下的程序。

不同点:

  1. javaw.exe运行程序时不会输出控制台信息,如果是双击打开jar文件的话(假设已经设置好了打开方式),那么根本就不会出现控制台窗口,主要用来运行带窗体的应用程序,其中的“w”就是window的意思,所以用它来运行控制台程序时虽不会报错,但不会输出任何结果。而java.exe无论运行控制台程序,还是运行窗体程序都没有任何问题。
  2. 运行java命令时,会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出,而运行javaw,开始时会出现console,当主程序调用之后,console就会消失。

http://chatgpt.dhexx.cn/article/SSfe4OhL.shtml

相关文章

java javaw 命令区别_java.exe和javaw.exe有什么区别

java.exe和javaw.exe有什么区别 java.exe和javaw.exe有什么区别? java.exe是运行class文件用的,即执行class文件。 而javaw.exe是干什么用的?参考我的: http://blog.csdn.net/ideality_hunter/article/details/51376006 ------javaw和java的区别,其他人的解释: http://bl…

java javaw 命令区别_java、javaw和javaws的区别

java、javaw和javaws的区别: 首先,所有的这些都是java的启动装置,java.exe经常使用,当使用命令行输出到window的时候,会有java.exe进程,通过任务管理器可以看到。通常 我们执行一些小的java程序的时候会有 java.exe进程在运行。javaw.exe对于我们也比较特殊,我们也能够通…

javaw java 区别_java和 javaw 及 javaws的区别解析

java ,javaw 和 javaws 的区别: 首先,所有的这些都是java的启动装置,java.exe经常使用,当使用命令行输出到window的时候,会有java.exe进程,通过任务管理器可以看到。通常 我们执行一些小的java程序的时候会…

mysql 命令行导入sql文件

1. 说明 有时候,使用navicat为MySQL导入sql文件时,会出现一些错误而导致数据无法导入成功,这时我们可以采用命令行的方式导入数据。以windows环境为例。 2. 步骤 a.数据表 b. 以命令行的方式登入mysql b.选择数据库进行导入 window…

SQL文件导入MySQL数据库

SQL文件导入MySQL数据库 1、MySQL设置环境变量 MYSQL_HOME:C:\Program Files (x86)\MySQL\MySQL Server 5.5 path:%MYSQL_HOME%bin 环境变量设置后,打开cmd命令窗口,输入mysql -u用户名 -p密码 登陆mysql 2、MySQL常用命令 source命令…

通过Navicate for MySQL导入SQL文件

场景:今天打算导入一个.sql 格式的外部数据文件,本来想通过在navicate界面打开.sql文件,运行将数据导入,但navicate一直出现卡段,推断该文件的数据量打开,软件打开非常吃力。 后面通过搜索,尝试…

MySQL中导入sql文件的步骤及常见问题(简单粗暴版)

1、新建数据库,字符集更改为utf8,点击确定。 2、右键点击新建的数据库,点击输入->SQL文件 3、找到相对应的sql文件,点击打开,最后刷新数据库。 常见问题:文件“xx.sql"的内容无法使用代码页936读取…

SQL——如何将sql文件导入mysql

1 创建新的数据库或存放在已有数据库,这里存放在已有数据库 2 使用已创建的数据库a 3 导入sql文件,输入“source sql文件的路径” (文件路径要将“ \ ”全部换成“ / ”) . 4 查看导入的数据表

Linux下的Mysql导入sql文件

使用: show databases;查看当前数据库 新建mmall数据库 create database mmall;查看是否新建成功 show databases;切换到mmall数据库 然后执行:其中/home/SQL/mmall.sql是我们要导入的对应的sql文件 source /home/SQL/mmall.sql执行:…

mysql文件怎么导入_mysql怎么导入sql文件

mysql导入sql文件的步骤:1、在【开始】界面中找到mysql,双击打开mysql软件,输入密码;2、创建一个数据库;3、输入“use 数据库名”,开始使用这个数据库;4、输入“source sql文件的路径”命令导入…

用Navicat for Mysql导入.sql文件

用Navicat for Mysql导入.sql文件 Navicat for MySQL里的导出连接、运行SQL文件、导入向导、还原备份、这些功能看起来好像都可以直接导入.sql文件。恰恰相反,其实导入.sql文件这功能在Navicat for Mysql里没有直接做成一个“功能”(没有实际按钮&#…

怎样将SQL文件导入MySQL

开发工具与关键技术:SQLserver,MySQL;数据库 撰写时间:2019-07-26 打开MySQL数据库在导航栏选中数据库选择创建数据库来创建一个新的数据库 自定义给数据库命名,命好名后点击【创建】即创建好一个新的数据库 在首选导航栏选中【…

Linux-Mysql导入sql文件

http://www.cnblogs.com/jiunadianshi/archive/2011/04/20/2022334.html 1.创建空数据库2.使用数据库并设置编码格式3.导入sql文件Linux数据库编码格式设置 查看字符编码 首先,将中文插入到数据库乱码是因为没有将数据库编码设置为支持中文的编码,mysql的…

linux mysql导入sql文件命令

如何用mysql命令行模式导入sql文件 linux mysql导入sql文件命令,首先要配系统变量,在我的电脑->属性->高级系统设置->环境变量->找到Path,加入你电脑上的mysql地址下的bin目录,如c:/wampp/mysql/bin:打开CMD输入以下命令(不需要转换目录)> mysql -u root -p…

【MySQL】如何导入SQL数据库

目录 如何导入SQL数据库【例子1-以Terminal终端命令行导入】【例子2-以SQLyog图形化软件导入】 如何导入SQL数据库 如何将现成的数据库导入到MySQL中?有两种方式: 通过终端命令行语句导入: mysql> source SQL文件的绝对路径通过MySQL的图…

如何将sql文件导入mysql

第一步:打在开始界面中找到mysql 第二步:双击打开mysql软件。,并输入密码。 第三步:如果sql文件的内容中有创建数据库的语句或者你想将表存放在你已有的数据库,在这里就不用创建数据库。 第四步:输入“show…

如何将.sql文件导入到mysql中

如何将.sql文件导入到mysql中 本人新手菜鸡,该文章仅为自己的学习问题记录,如有不足望大佬指正。 1.第一步:在windows开始界面找到mysql 2.第二步:双击打开mysql,并输入密码 3.第三步:创建数据库&…

MySQL导入sql文件

导入方法:不使用MySQL的command,要先用cmd切换到sql文件所在目录,再导入。如果数据库中没有要导入的数据库,要先创建此数据库再导入 步骤: 1.切换到所在目录 D: cd D:MYSQL2.打开Mysql mysql -uroot -p12we34rt3.检查数据库中是…

MySQL导入sql文件的三种方法

文章目录 一、使用工具Navicat for MySQL导入1.打开localhost_3306,选中右击“新建数据库”2.指定数据库名和字符集(可根据sql文件的字符集类型自行选择)3.选中数据库下的表运行SQL文件4.选中路径导入 二、使用官方工具MySQL Workbench导入1、第一种方法…

解决 scalac: bad option: ‘-make:transitive‘

scalac: bad option: ‘-make:transitive’ 打开项目所在位置并进入 .idea 修改scala_compiler.xml文件 删除掉参数行包含-make:transitive 保存后 重新运行代码