javac
一、简述:
cmd中,执行java命令与javac命令的区别:
javac:是编译命令,将java源文件编译成.class字节码文件。
例如:javac hello.java
将生成hello.class文件。
java:是运行字节码文件;由java虚拟机对字节码进行解释和运行。
例如:java hello
二、详述:
下面我们来写个java文件试试。
1、打开记事本,输入一个类+主函数
public class Hello{
public static void main(String[] args) {
System.out.println("hello world");
}
}
2、点击 文件->保存,保存到相应文件夹下,文件名修改了xxx.java
3、在Hello.java文件夹内,空白位置,按住键盘Shift,右击鼠标,选择“在此处打开命令窗口”
4、输入 javac Hello.java 回车
如果java类书写格式没有错误,cmd不会报错,而且在java文件同目录内生成一个class文件。
5、输入 java Hello 回车
若输出下图,恭喜你,成功了!你已经把java类中,输出打印“Hello World”显示在cmd命令行中。
三、总结:
首先我们使用记事本编写java源代码,扩展名.java;
在命令行模式中,输入命令:javac 源文件名.java,对源代码进行编译,生成class字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,对class字节码文件进行解释运行,打印“Hello World”。
为了方便大家理解javac和java编译运行过程,可以看下图:
至此,我相信大家应该对javac和java使用有了比较客观的了解。
四、答疑:
接下来,我们来看一下大家在实践中容易遇到的问题。
问题一:cmd命令一定要准确,区分大小写,注意是否要加扩展名。
javac Hello.java
java Hello
问题二:javac命令报错,如下图
javac命令报错,一般都是java代码有误,需要检查修改。
下图中,java代码很明显的错误,输出打印语句写在了main函数的外面,修改正确就不会报错了。
javac命令报错,去看java代码,肯定有错误。
问题三:javac命令执行完成,生成class文件,但是java命令报错,如下图
我查阅资料,找到报错的原因,首先检查java源代码,记住,java类不要加package路径!再就是java环境变量有问题,咱们一起来检查一下。
右击“计算机-属性-高级系统设置”,单击“环境变量”。我相信大家都已经配置java环境变量,咱们来检查一下,如果不会配置java环境变量,请查看java开发配置环境变量https://blog.csdn.net/yongfeng929/article/details/73733973。
逐一核对 ”JAVA_HOME” “Path” “CLASSPATH”
(1)"JAVA_HOME",变量值是你的电脑JDK的安装路径,我的是"D:\java\tool\java1.8\JDK"
(2)"Path",在原变量值的最后面加上”;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”
(3)”CLASSPATH”,变量值”.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”
特别注意变量值开头是”.;”(点分号),这个地方需要特别注意,我就是因为这个点和分号不对报错的。
java源码修改后,需要把之前生成的class文件删除,从新运行javac和java命令。
环境变量修改后,一定要重启cmd命令行窗口,再把把之前生成的class文件删掉,重新运行javac和java命令。
注:若在输入javac命令时,显示'javac'不是内部或外部命令,原因也是因为没有提前安装好JDK开发环境或环境变量配置有误。
五、作者推荐
cmd命令行运行java代码是最基础,而且都应该掌握的方式,特别是对于新人来说,应该最先接触学习。随着学习的深入,如果觉得记事本写java代码太low,作者推荐使用EditPlus,功能很强大的体积又很小的文本编辑软件,是收费软件,不过破解很简单,大家可以百度一下。然后大家会用到专业的IDE(Integrated Development environment,集成开发环境)软件,如Eclipse(免费),MyEclipse(收费),intelliJ IDEA(收费)等等,目前我只接触到以上列举的三款IDE,免费的推荐Eclipse,收费的推荐IntelliJ IDEA,收费软件网上都有破解方法,但是破解版不如免费版稳定,大家可以自行选择。
因时间仓促,作者水平有限,文中难免有不足之处,恳请大家批评指正。
end
-----------------------------------------------------------------------------------------------------
注:作者 望穿秋水见伊人,本人使用windows 7旗舰版64位操作系统
相关阅读
HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议
很多人都认为java中属性就是成员变量,其实不然;那他们有什么区别呢?让我们通过以下代码来理解: public class Person { private Str
1.Properties类是什么? Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配
Class 对象 如果想在运行时使用类型信息,就必须首先获得对恰当的Class对象的引用。Class.forName()就是实现此功能的捷径,因为这样
前几天看了下Ruby的IPParse,觉得很过瘾,上网查了下貌似很多IP数据库都要收费的,就下了个纯真QQIP地址库,发现还可以在线升级的,很适合