java、javac、javap指令应用

2 篇文章 0 订阅

        在日常工作中,我们新建java工程,写好代码后,现在编译和运行几乎都是通过ide(如eclipse)工具完成。但作为java开发者还是要了解下java虚拟机指令。通过javac和java执行编译java文件和运行class以及jar文件。以windows系统为例解析javac和java指令的使用过程。

步骤一:通过eclipse新建java工程

步骤二:新建Java工程后,在src目录下新建jvm包

步骤三:在jvm包先新建HelloWord.java类,打印“hello world!“,代码如下。我们这里需要注意的是这里需要注意HelloWorld类的package包名。

 

步骤三:通过javac指令对HelloWorld.class文件进行编译具体操作过程如下:

        1.打开cmd命令,输入javac指令,如果提示命令找不到,则需要配置java路径。具体配置过程参考以下连接: win10报错jar不是内部或外部命令,也不是可运行的程序_lvxiucai的博客-CSDN博客_jar不是内部或外部命令,也不是可运行的程序        如果比较懒不想配置也没关系,直接通过cd命令进入安装java路径的bin目录,在bin目录下执行javac命令,如图

        2.如果java路径已配置好,则可直接通过cd命令进入java代码所在目录,如图所示。其中javademo为工程名,jvm为包名。 

        3.当HelloWorld.java代码写好后,我们可以通过javac指令对java文件进行编译,生成class文件,如图。这里需要注意的是生成的class文件和java文件在同一目录下,如图。

 步骤四:java指令的使用

        1.如果直接在当前目录下执行java HelloWorld会提示找不到或无法加载主类,如图所示。但实际情况是HelloWorld.class文件在当前目录下是真是存在的。此时,如果我们直接进入到src目录下,再执行java jvm.HelloWorld就能正常执行(所以这里一定要注意包名)。

 

        2.如果java类是有多个,这个时候我们在打包的时候就需要将多个文件(不管是class文件或者是java文件)打成jar包,打jar包的命令即为jar命令。例如将HelloWorld.class打成一个jar包,然后再通过命令行的形式运行jar文件,输出HelloWorld.        

        2.1.在打jar包的时候需要注意,不能在jvm目录下面执行,这里需要退到jvm的上级目录,在上级目录执行jar cvf hello.jar jvm执行,这样就可以将jvm目录下的所有文件一起打成一个jar包了。

        2.2打成jar包后,我们直接在src目录下执行java –jar hello.jar指令,这个时候是没办法直接运行jar包的,会出现jar包中没有主清单属性类型这样的报错信息。

         2.3.此时就需要我们手动维护jar包中的MANIFEST.MF文件,在MANIFEST.MF文件中维护好Main-class配置,配置信息如下,Main-class配置的是启动类,这里需要写好路径名称,如jvm.HelloWorld。配置修改后的MANIFEST.MF文件如下所示。再次执行java指令提示执行成功。

        2.4.由于MANIFEST.MF文件比较弱,所以在修改MANIFEST.MF的过程中,一定要注意空格。如果出现类似Error: Invalid or corrupt jarfile hello.jar这种错误如图所示。这种情况一般就是MANIFEST.MF文件的格式不对,常见的错误有该有空格的地方没有空格,不该有空格的地方出现空格了。一般修改过程是直接通过zip压缩工具打开jar包后,选中MANIFEST.MF文件,用记事本打开,修改后直接保存。这时候会自动将变化后的.MF文件会写到jar包中。

         3.class文件是由java文件经过java虚拟机编译后生成的指令集文件,如果想查看指令集详细信息可以通过javap -c HelloWorld.class或者javap -c -verbose HelloWorld.class指令查看。

        4. 如果需要查看class文件的二进制字节码信息,可以直接将class文件拖到sublime中打开,这里推荐一下sublime,感觉用户交互确实挺好。

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunny_daily

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值