javac 订阅
javac 是java语言编程编译器。全称java compiler。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。 展开全文
javac 是java语言编程编译器。全称java compiler。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。
信息
结    构
javac
options
命令行选项
中文名
javac
@files
多个对源文件进行列表的文件
javac结构
[ options ] [ sourcefiles ] [ @files ]参数可按任意次序排列。命令行选项。一个或多个要编译的源文件(例如 MyClass.java)。
收起全文
精华内容
下载资源
问答
  • javac

    2018-03-14 21:29:35
    编译命令介绍其实,java编译过程主要使用了javac和java两个命令。这里先介绍一下这两个命令的使用方法。javacjavac用于将java文件编译成byte-code class文件。使用方法如下:javac [ options ] [ sourcefiles ] [ ...

    编译命令介绍

    其实,java编译过程主要使用了javac和java两个命令。这里先介绍一下这两个命令的使用方法。


    javac

    javac用于将java文件编译成byte-code class文件。使用方法如下:

    javac [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]
    • 1

    其中options有几个关键参数:

    • -d:指定编译成的class文件的存放位置。默认情况下,编译生成的class文件和源java文件在同一目录下。
    • -classpath(-cp):用于搜索编译所需要的class文件,指出编译所用到的class文件的位置。

    java

    java用于执行程序,格式如下:

    java [options] classfile
    • 1

    其中,options一般需要指定-classpath参数,用于指定要执行的文件所在的位置以及需要用到的类的路径。


    代码编译与运行

    这里介绍一个带package的测试用例。以前大家在学习javac编译的时候,都是在默认包下进行的编译,一般不会出问题,但是遇到带package的类就不一样了。 
    示例目录结构如下: 
    jvm_directory

    其中,src是默认的package目录。我们在src/jvm目录下增加两个测试文件,内容如下:

    1. src/jvm/CompileClass.java
    package jvm;
    
    public class CompileClass {
        public static void main(String[] args) {
            TestClass1 mTestClass1 = new TestClass1();
            mTestClass1.sayHello();
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. src/jvm/TestClass1.java
    package jvm;
    
    public class TestClass1 {
        public void sayHello() {
            System.out.println("Hello World!");
        }
        public static void main(String[] args) {
            TestClass1 mTestClass1 = new TestClass1();
            mTestClass1->sayHello();
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    这时,如果直接在src/jvm目录下,用javac编译CompileClass,报错如下: 
    error_javac

    我想平时大家写完这么简单的代码,用Ecplise点一下run按钮是不可能遇到这种问题的。那之所以会遇到这个问题,就是由于Ecplise这种编译器替我们掩盖了java是有类发现规则的。


    java类发现规则

    要想成功的编译和执行java文件,是需要有classpath和包名的共同配合。

    我们先尝试禁用一下classpath,禁用的方法是在运行javac的时候,指定 
    -classpath ""

    在src/jvm目录下,我们禁用classpath,编译TestClass1.java:

    javac -classpath "" TestClass1.java
    • 1

    大家执行之后,发现是可以编译通过的(至于能否执行大家先不要在意)。

    但是,同样在src/jvm目录下,我们禁用classpath去编译CompileClass.java,是无法编译通过的,编译错误和之前是一样的。之所以ComplieClass.java无法编译通过,是因为ComplieClass.java的源码中调用了TestClass1这个类,而禁用掉classpath之后,javac无法找到TestClass1了。由此,我们可以总结出如下规律:

    当你需要编译(或执行)的类A引用了其他的类如B时,编译器需要在-classpath指定的目录下去找B 
    当类B中也指定了package时,那B的路径path=classpath + “/” + package(将所有的”.”转换为”/”)

    因此,在src/jvm目录下,为了能让ComplieClass.java在编译时能够找到TestClass1这个类,我们需要这样设置classpath:

    javac -classpath ".." CompileClass.java
    • 1

    执行的时候,命令如下:

    java -classpath ".." jvm.CompileClass
    • 1

    分离.class和.java文件

    在了解了java类发现规则之后,我们应该再去优化一下我们的编译方法。

    参考Eclipse,它在java项目的根目录下,分别创建了一个src目录和一个bin目录。其中:

    • src目录:存放所有的.java文件。
    • bin目录:存放所有的编译出来的.class文件。

    我们可以很轻松的通过-d参数指定目录实现该功能。并且,当我们这么做的时候,bin目录生成的.class文件都保持了src目录的相应结构,我们就不用再去费心考虑classpath查找类的问题了。

    示例过程如截图所示: 
    compile_process


    展开全文
  • Javac

    2017-08-14 09:20:00
    Javac是一种编译器,把java源代码语言转化成JVM能够识别的一种语言,然后由JVM将JVM语言再转化成这个机器能够识别的机器语言。   Javac编译器的基本结构 Javac功能 首先:语法分析 语法分析的...

    Javac是什么

    Javac是一种编译器,把java源代码语言转化成JVM能够识别的一种语言,然后由JVM将JVM语言再转化成这个机器能够识别的机器语言。

     

    Javac编译器的基本结构

    Javac功能

    085245_4Hcc_2290420.png

    首先:语法分析

    语法分析的结果就是从源代码中找出一些规范化的Token流,就像人类语言中,给你一句话,你要能分辨出哪些是词语,那些是标点符号,哪些是动词,哪些是名词等。

     

    其次:语义分析

    将复杂的语法转化为简单的语法

     

    最后:通过字节码生成器生成字节码

    就是讲一个数据结构转化为另一个数据结构,就像将所有的中文词语翻译成英文单词后,按照英文语法组装成英文语句。

     

    Javac组件

    090726_eyV6_2290420.png

    Javac主要有4个模块,分别是词法分析器,语法分析器,语义分析器和代码生成器。

     

    Javac工作原理分析

    1.词法分析器:

     

    2.语法分析器

     

    3.语义分析器

     

    4.代码生成器

    转载于:https://my.oschina.net/aslanjia/blog/1509479

    展开全文
  • “‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件” 下面就讲讲解决方法 解决过程 根据探究的情况来看,这里其实是没有安装好(或者是安装了之后但是在环境变量上却没有设置好) 第一...

    简述

    在学着使用Java的命令行来编译java文件的时候,遇到了这个问题
    Windows操作系统

    “‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件”
    

    下面就讲讲解决方法

    回复评论区的找不到环境变量和用户变量的哥们

    • 瞎发帖 我呵呵

    在这里插入图片描述

    解决过程

    根据探究的情况来看,这里其实是没有安装好(或者是安装了之后但是在环境变量上却没有设置好)

    • 第一步:http://www.oracle.com/technetwork/java/javase/downloads/index.html 这个网站上先下载对应 JDK(只用下JDK就好了
    • 这里写图片描述
    • 就点上图中所圈的地方(如果是有更新版本的话,操作也应该是类似的
    • 大胆地安装,其实这个安装起来是非常快的。(安装的时候,我直接选了默认的地址(当然该一下对应的地址也是可以的))
    • 我的JAVA文件所在地址: C:\Program Files\Java (如果不记得的话,可以重新安装一下的)
    • 安装好之后,就需要配置一下环境变量 , 具体配置如下
    • 在用户变量中, 添加新变量,命名为java_home,地址为 C:\Program Files\Java\jdk-10.0.2,注意,我之前的JAVA文件所在地址。
    • 在Path中添加一个变量。 分别的地址为 C:\Program Files\Java\jdk-10.0.2\bin

    可能还有的问题

    做完上面的操作之后,有可能还是不行。这里有两个解决方法。

    • 第一个,重启一下 cmd
    • 第二个,在Path中,调整下那两个bin文件夹的位置(上移到最上面),之后,再重启cmd

    从上面的第二个方法就可以知道,其实,这个javac这个exe文件就在这个bin文件夹中(就是jdk的那个)。


    解决之后的效果

    如下

    这里写图片描述

    在这里插入图片描述

    展开全文
  • 打开cmd,输入java,java -version没有问题,但是javac提示不是内部命令 问题排查: 找到java安装下的bin目录,运行cmd,输入javac,能提示,说明环境配置有问题 cmd输入:path 看看java 相关的java相关...

    描述:

    打开cmd,输入java,java -version没有问题,但是javac提示不是内部命令

    问题排查:

    • 找到java安装下的bin目录,运行cmd,输入javac,能提示,说明环境配置有问题

     

    • cmd输入:path

    看看java 相关的java相关路径有没有多余的符号,比如多出分号,逗号(笔者上面是正确的路径展示形式)

    • 看看下载的解压后java目录对不对

    正确的姿势

    笔者的却是这样(错误):

    很难受!!

    (1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径) 
    (2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” ,win10去掉分号,隔行即可,笔者下面有图
    (3)新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”

    最后附上环境变量配置图:

     

     

    修改好的环境变量,需要重新打开新的cmd窗口!!

     

    展开全文
  • JAVAC配置

    2017-05-20 20:09:55
    javac
  • javac使用

    2019-04-25 16:52:55
    javac使用
  • javac extension method issue

    2020-12-02 01:39:24
    [javac] at lombok.javac.handlers.Javac.typeNodeOf(Javac.java:155) [javac] at lombok.javac.handlers.ast.JavacType.typeOf(JavacType.java:304) [javac] at lombok.javac.handlers.HandleExtensionMethod$...
  • 昨天重装了win10系统,发现以前配好的java环境变量和tomcat环境变量全都清空了,在重新配置的时候总是出现问题,即在cmd命令窗口下,输入java,显示正常,输入java -version 也是显示正常,唯独输入javac,显示...
  • Javac源代码

    2016-08-31 13:27:33
    Javac源代码
  • > javac -help > -parameters 生成元数据以用于方法参数的反射 意思就是我们想获取方法中的参数名的话就要加这个参数 **我们先看普通编译javac App.java**
  • 文章目录一、前言二、Javac编译原理二、javac命令的使用1、只有一个java文件的情况2、有多个java文件的情况3、有依赖jar包的情况4、Unity中使用javac编译渠道sdk的java文件 一、前言 在缺乏eclipse和AndroidStudio等...
  • Javac 编译器

    2017-10-01 11:15:44
    要点: 1、Javac 如何将 Java 的源代码转化为 class 字节码? 2、Javac 的语法树结构; 3、Javac 的详细工作流程; 4、Java 中如何实现内部类? 5、Javac 与其他编译器的比较;
  • Javac exception

    2018-05-28 09:07:41
    Javac exception Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK 尝试 jdk环境中需要将 %JAVA_HOME%\lib\tools.jar 拷贝到 ...
  • javac配置

    2019-09-29 22:10:58
    以下是配置Javac和Java配置的截图,希望可以帮助到你。## 标题
  • javac命令

    2018-03-19 20:24:22
    在命令窗口获取javac命令是最直接的方式:javac -help 或 javac会得到一下展示信息并且有命令说明:用法: javac <options> <source files>其中, 可能的选项包括: -g 生成所有调试信息...
  • 深入理解Java虚拟机--javac命令

    万次阅读 2017-05-02 14:39:50
    javac命令用于将 .java 源文件编译成 .class 字节码文件,在windows命令行中使用"javac -help"命令查看其用法: 语法格式: javac <options> <source files> options # 命令行选项,可指定多个...
  • javac详解

    2018-06-21 10:44:52
    转自:http://jeffchen.iteye.com/blog/395671结构javac [ options ] [ sourcefiles ] [ @files ] 参数可按任意次序排列。options命令行选项。... 说明javac有两种方法可将源代码文件名传递给 ...
  • jdk7 javac源码

    2017-03-10 17:36:04
    jdk7 javac源码
  • 所以javac要将Java语言规范解析成Java虚拟机的语法规范,Javac作为‘翻译‘’。 Javac是什么? 机器能够识别和运行的都是机器码,但人去写机器码的话太困难,太不友好、所以人们通过编译器将高级语言转换成目标...
  • javac命令学习

    2021-01-29 21:29:50
    项目中使用了maven,pom.xml文件中有各种配置,感觉有些生疏,...一、javac介绍 javac是一个编译Java源码的编译程序,根据Java源文件生成class文件 二、使用 javac Test.java 三、参数说明 -d 指定源文件目录 ...
  • javac classpath

    2012-09-10 23:25:39
    然后我在c:\Users\Administrator路径下运行javac,和java命令 情况1: 在d:\java\javaText下有一个Hello.java的源文件, C:\Users\Administrator>javac d:\java\javaText\Hello.java编译通过,C:\Users\...
  • bash: javac: command not found java 版本 1.8 [root@localhost home]# java -version openjdk version “1.8.0_232” 安装的时候直接 yum install java 安装的,运行 javac 报错,发现是少包,于是再次安装一下...
  • javac 编译

    2015-09-15 15:30:19
    javac test.java 默认会在 跟test.java 通目录下生成 test.class 当test.java文件依赖多个jar包时可用 javac -cp a.jar;b.jar;c.jar test.java 也可以用: javac -classpath a.jar;b.jar;c.jar test.java 注意...
  • Lombok will not run during this compilation: java.lang.ClassCastException: Cannot cast lombok.javac.handlers.HandleFieldDefaults to lombok.javac.JavacAnnotationHandler at java.lang.Class.cast(Class....
  • cmd中javac和java使用及注意事项

    万次阅读 多人点赞 2018-07-31 10:10:21
    cmd中,执行java命令与javac命令的区别: javac:是编译命令,将java源文件编译成.class字节码文件。 例如:javac hello.java 将生成hello.class文件。   java:是运行字节码文件;由java虚拟机对字节码进行...
  • javac编译

    2016-08-18 00:28:50
    用dos命令javac编译java文件时遇到的问题: 如果有个接口类A和一个类B在同一个文件夹下面,且类B实现接口A,如果要编译B有两种方式: 1:同时编译如:javac A.java B.java; //注间是用空格分开 2:先编译好A,再...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,141
精华内容 12,056
关键字:

javac

java 订阅