因为没有写public static void mian(String[] args) 在类里面只有属性和方法,内部类.不能直接写System.out.println():…
对于单个文件的且不引用其他类文件的java源码用javac编译大家都很熟悉即 javac mycode.java 但是如果这个文件引用到了其他的类文件,在进行编译的时候就会提示找不到符号,这时我们需要使用下面的命令 D:\Tomcat6\webapps\src>javac -encoding utf-8 -sourcepath D:\Tomcat6\webapps\src -cp D:\Tomcat6\webapps\kq\WEB-INF\lib\org.json.jar mycode.java…
编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如 JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机.虚拟机等的语言,大多都遵循这种基于现代经典编译原理的思路,在执行前先对程序源码进行词法解析和语法解析处理,把源码转化为抽…
编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机.虚拟机等的语言,大多都遵循这种基于现代经典编译原理的思路,在执行前先对程序源码进行词法解析和语法解析处理,把源码转化为抽象…
我们都知道,计算机只能识别二进制语言,是不能直接识别java c c++等高级语言的.将高级语言转化成计算机可以是别的二进制语言,这个过程就叫编译. 有次面试,面试官问了一道“java的编译原理是什么”,当时给懵了,只知道是把java文件转换成class文件,然后由jvm执行,具体流程就不知道了.今天看了许令波编著的<深入分析java web技术内幕>一书,其中有一章讲的就是javac的编译原理,看了一遍,感觉有点云里雾里,不是很明白,接下还得多看看几遍,多上网查查资料深入透彻的学习一下. 今…
本文转载自:http://blog.csdn.net/ns_code/article/details/18009455 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机.虚…
Linux下使用javac编译Hadoop程序 首先要配置好Hadoop, 给出两个教程 Hadoop安装教程单机/伪分布式配置Hadoop2.6.0/Ubuntu14.04 Hadoop集群安装配置教程Hadoop2.6.0Ubuntu/CentOS 然后修改CLASSPATH 可以在/etc/profile中添加这一行 export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH 放在HADOOP_HOME之后…
这里记录zookeeper编译源代码上的一些细节的问题. 网上不少关于如何使用ant eclipse来构建zookeeper对应的eclipse工程的记录.这里就不再过多赘述.只做简单阐述. 这里主要阐述一下如何不使用任何工具直接使用javac的方式来编译zookeeper项目,并且直接使用java来运行. 一.使用ant构建eclispe工程编译法非常简单.就是在github将zookeeper项目代码下载下来.里面已经有写好的build.xml和ivy.xml及设置文档.会将所有相关依赖下载…
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18009455 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机…
第一种常见错误: package demo_01; public class hello { public static void main(String[] args) { System.out.println("1"); } } 在代码中不能存package xxx;类似代码 第二种: 注意中英文标点符号 第三种: 注意使用java xxxx时注意执行的是否是编译后的class文件,因为文件名称与文件中的类名不一样,编译出来的class文件将会和类名一致 第四种: 文件名不要存在空…
javac编译的四个主要的流程: 词法分析器:将源码转换为Token流 将源代码划分成一个个Token(找出java语言中的关键字) 语法分析器:将Token流转化为语法树 将上述的一个个Token组成一句句话(或者说成一句句代码块),检查这一句句话是不是符合Java语言规范(如if后面跟的是不是布尔判断表达式) 语义分析器:将语法树转化为注解语法树 将复杂的语法转化成简单的语法(eg.注解.foreach转化为for循环.去掉永不会用到的代码块)并做一些检查,添加一些代码(默认构造器) 代码生…
转自:https://blog.csdn.net/leytton/article/details/52740171 Linux下为UTF-8编码,javac编译gbk编码的java文件时,容易出现“错误: 编码UTF8的不可映射字符” 解决方法是添加encoding 参数:javac -encoding gbk WordCount.java Windows下为GBK编码,javac编译utf-8编码的java文件时,容易出现“错误: 编码GBK的不可映射字符” 解决方法是添加encoding 参…
[深入Java虚拟机]之七:Javac编译与JIT编译 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现.很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目标机器代码的生成过程. 如今,基于物理机.虚拟机等的语言,大多都遵循这种基于现代经典编译原理的思路,在执行前…
首先我们要知道,打包好的Java程序中都是编译好的字节码文件(*.class).这些class文件会在执行的时候被载入到JVM中. 若想替换掉某一个类,那么仅仅须要将该类的源代码又一次编译然后再替换之前的class文件就可以. 那么假设没有源码怎么办呢?这个时候我们能够用反编译软件来反编译class文件,反编译软件中比較有名是jd-GUI.能够从官网上下载到最新的版本号 我这里使用的是jd-gui-0.3.6.windows 下载完之后将class文件或者jar包拖到jd-gui的窗体中就能够看…
本人写了一个关于servlet的webapp,但是在用javac编译的时候,只是单纯的将jsp-api.jar和servlet-api.jar拷贝放在了其目录下面,然后利用命令行 javac XXX.java开始编译,然后出现了一大堆错误,如下: FirstServlet.java:7: 错误: 找不到符号public class FirstServlet extends HttpServlet ^ 符号: 类 HttpServletFirstServlet.java:9: 错误: 找不到符号…
注:本文主要记录自<深入分析java web技术内幕>"第四章 javac编译原理" 1.javac作用 将*.java源代码文件转化为*.class文件 2.编译流程 流程: 词法分析器:将源码转换为Token流 将源代码划分成一个个Token(Token包含的元素类型看3.2) 语法分析器:将Token流转化为语法树 将上述的一个个Token组成一句句话(或者说成一句句代码块),检查这一句句话是不是符合Java语言规范 语义分析器:将语法树转化为注解语法树 将复杂的语法…
Linux 系统下一般默认使用UTF-8编码, 使用javac 编辑使用其他编码格式编写的源吗时,会出现  “ 错误: 编码UTF8的不可映射字符 ”. 最近在使用  javac 编译 一个在windows 平台下使用gbk编码编写的一个源码时报错: 解决方法是添加encoding 参数:javac -encoding gbk ArrayTest3.java 另外: Windows下为GBK编码,javac编译utf-8编码的java文件时,容易出现“错误: 编码GBK的不可映射字符”, 解决方…
发生原因:运行javac编译时没有加上扩展名.解决方法:加上.java扩展名重新编译即可,"xxxxxx.java".…
使用javac编译java文件生成class文件 >javac HelloWorld.java执行class文件>java HelloWorld 原因: 含有包名 解决办法: 按照包的结构新建目录,在最外层目录编译javac net/newcapec/HelloWorld.java,然后执行java net.newcapec.HelloWorld 源码```package net.newcapec; /** * @author admin * */public class HelloWorld…
编译器与Javac编译原理 在前文我们知道了Java是一种编译语言和解释语言,它的源代码经过编译器Javac编译为能够被JVM识别的二进制语言,然后JVM将其解释为能够被平台识别的机器语言.那么什么是编译器呢?编译器的作用是什么呢?Javac又是如何进行工作的?下面我们一一来认识了解. 1 编译器(Compiler ) 简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序.一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (…
javac 编译过程     一.解析与填充符号表: 1.  语法.此法分析:          a) 语法分析:将源代码字符流转换为标记(Token:编译过程最小元素)集合.          b) 词法分析:根据标记序列构造抽象语法树(AST:用来描述程序代码语法结构的树形表示方式,每一个节点代表程序中的一个语法结构. 2.  填充符号表:一组符号地址和符号信息组成的表格. 二.注解处理器: 插入式注解处理器,编译期间处理注解,读取,修改,删除语法树中的任意元素,编译器会根据修改与否,重新回…
在阅读Javac源码的过程中,发现一个上下文对象Context. 这个对象用来确保一次编译过程中的用到的类都只有一个实例,即实现我们经常提到的"单例模式". 今天,特意对这个上下文容器进行解析,主要是讲解上下文容器.单例模式和延迟创建. 通过对OpenJDK和Javac源码的一点点解析,希望自己能够搞懂JDK和Javac的实现. 1.OpenJDK源码示例 a.上下文容器 public class com.sun.tools.javac.util.Context{ //构造函数 pub…
Javac编译找不到符号 报错 找不到符号 如果是两个.java有调用关系,需要同时编译 首先我检查了下代码,发现并没有问题,然后将A.java文件的内容复制到D.java中,发现程序能正常运行,而之前的两个java类在同一个文件下,想想是执行“javac D.java”的时候找不到A.class文件,然后觉得可能是环境变量配置的时候出现了问题,后查看 环境变量 classpath 然后我发现在 “ .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar“的”.“…
通过javac编译java文件1.先导入需要引用的包D:\Program Files (x86)\apache-tomcat-7.0.53\webapps\test\WEB-INF\classes>set classpath=%classpath%;D:\Program Files (x86)\apache-tomcat-7.0.53\lib\servlet-api.jar 2.将java文件按包名称编译到当前文件夹D:\Program Files (x86)\apache-tomcat-7.0…
一.复现步骤 1)编写待编译的java类 package f_asm_and_javassist; import jdk.internal.org.objectweb.asm.*; import java.io.*; import static jdk.internal.org.objectweb.asm.Opcodes.ASM5; /** * @Author zhangboqing * @Date 2020/3/26 */ public class AsmDemo { //访问类的方法和字段…
java源码(包结构) 源码存放位置:C:/Users/liaolongjun/DeskTop/java/ package test; import test.sub.F; public class H extends F { public static void main(String[]args){ System.out.println("H.java 廖龙军"); } } package test.sub; public class F { }     javac命令编译java…
使用命令行javac命令编译java文件, 提示错误:编码GBK的不可映射字符. 在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe会获得我们操作系统默认采用的编码格式. JDK根据操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),把源程序从默认编码格式转化为JDK内部默认的UNICODE格式放入内存中.然后把转换后的unicode格式的文件进行编译成.class类文件,此时.cl…
编译器把一种语言规范转化为另一种语言规范的这个过程需要哪些步骤:…
一般用UE或记事本编辑过的UTF-8的文件头会加入BOM标识,该标识由3个char组成.在UTF-8的标准里该BOM标识是可有可无的,Sun 的javac 在编译带有BOM的UTF-8的格式的文件时会出现“非法字符:\65279”的错误,但是用Eclipse进行编译却没有问题,原因在于Eclipse使用的是自己的JDT,而非javac,关于JDT的描述可以到eclipse的官网上去查看. 出现这种情况时,有两种解决方法: a) 利用UE.Editplus等文本编辑器重新保存文件为不带BOM的UT…
写在前面 JDK & JRE  JRE(Java Runtime Enviroment)是Java的运行环境.面向Java程序的使用者,而不是开发者.如果你仅下载并安装了JRE,那么你的系统只能运行Java程序.JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库.它包括Java虚拟机.Java平台核心类和支持文件.它不包含开发工具(编译器.调试器等). JDK(Java Development Kit)又称J2SDK(Java2 Software Developme…