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)。
收起全文
精华内容
下载资源
问答
  • 打开cmd,输入java,java -version没有问题,但是javac提示不是内部命令 问题排查: 找到java安装下的bin目录,运行cmd,输入javac,能提示,说明环境配置有问题 cmd输入:path 看看java 相关的java相关路径有没有...

    目录

    步骤一:找到JDK下的bin目录,运行cmd,输入javac,能提示,说明环境配置有问题

    步骤二:cmd输入:path

    步骤三:看看下载的JDK包解压后目录对不对

    步骤四:检查是否有环境冲突

    最后:环境变量配置


    描述:

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

    问题排查:

    步骤一:找到JDK下的bin目录,运行cmd,输入javac,能提示,说明环境配置有问题

            

            

    步骤二:cmd输入:path

             

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

    步骤三:看看下载的JDK包解压后目录对不对

    主要是检查“步骤一”目录不对而且bin目录下运行不出java,javac结果,重新去下载

    JDK8  JDK11  JDK16  更多版本  下载需要登录Oracle,注册登录即可下载

    • JDK8的目录 
    • JDK11目录

     

     

    步骤四:检查Path变量是否有环境冲突

            下面出现的路径注意:jdk.exe安装会自动添加,删除即可; 

                

     

    最后:环境变量配置(推荐`系统变量`):

    注意系统变量和用户变量的区别

    (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

    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-源码

    2021-02-12 11:12:21
    javac
  • “‘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的那个)。


    解决之后的效果

    如下

    这里写图片描述

    在这里插入图片描述

    展开全文
  • JAVAC配置

    千次阅读 2017-05-20 20:09:55
    javac

    这种简单的能百度到的问题确实可以直接看多人的说法然后进行操作

    自己在系统变量上瞎操作浪费大量时间

    javac

    配置在path 在系统变量无法配置

    展开全文
  • javac 源码 javac 源码

    热门讨论 2009-03-04 14:35:11
    javac 源码 javac 源码 javac 源码
  • java 编译器 源码 javac javac 编译器源代码
  • javac使用

    2019-04-25 16:52:55
    javac使用
  • 文章目录一、前言二、Javac编译原理二、javac命令的使用1、只有一个java文件的情况2、有多个java文件的情况3、有依赖jar包的情况4、Unity中使用javac编译渠道sdk的java文件 一、前言 在缺乏eclipse和AndroidStudio等...
  • javac源码探索
  • javac-source-code-reading:javac源码调试
  • javac命令

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

    2016-08-31 13:27:33
    Javac源代码
  • 关于nb-javac! “ nb-javac”是OpenJDK“ javac”的补丁版本,即Java编译器。 长期以来,这一直是NetBeans的一部分,它提供了专门针对Java编辑器的经过高度调整的Java编译器,即针对语法着色,代码完成等功能进行...
  • > javac -help > -parameters 生成元数据以用于方法参数的反射 意思就是我们想获取方法中的参数名的话就要加这个参数 **我们先看普通编译javac App.java**
  • jdk7 javac源码

    2017-03-10 17:36:04
    jdk7 javac源码
  • 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++.zip

    2021-02-03 11:05:25
    JDK7,OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)
  • javac-ast-experiments 本项目用于开发示例和实验,以说明和理解如何通过各种javac编译器插件访问和操作javac AST。 该项目目前是以下子项目的容器: javac-ast-reader :这个 maven 项目提供了一个注释处理器的...
  • javac-jdk.rar

    2021-01-13 17:37:28
    javac-jdk.rar
  • javac命令编译实体类对于javac的@Data注解怎么处理,我使用javac编译class时报错,找到了文件位置才看到是@Data这个注解报错了,应该怎么处理。 编译是使用的java编译的
  • cmd中javac和java使用及注意事项

    万次阅读 多人点赞 2018-07-31 10:10:21
    cmd中,执行java命令与javac命令的区别: javac:是编译命令,将java源文件编译成.class字节码文件。 例如:javac hello.java 将生成hello.class文件。   java:是运行字节码文件;由java虚拟机对字节码进行...
  • ##轻量级 javac @Warning 注解 常问问题: 问: @Warning 注释是干什么用的? A:用于从 java 编译器 (javac) 抛出警告消息。 问:何时以及为什么可以使用它? A:当你想将某段代码标记为“危险”或“不稳定”等...
  • 主要介绍了JAVA和JAVAC 命令详细介绍的相关资料,本文对java 和javac 命令进行了详解,并在Windows和Linux 平台分别说明,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 197,683
精华内容 79,073
关键字:

javac

java 订阅