博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java跟Javac,package与import
阅读量:5071 次
发布时间:2019-06-12

本文共 1455 字,大约阅读时间需要 4 分钟。

  今天讨论一下2个指令与2个关键字。

这次的没有IDE环境,直接在txt文本里编程,在cmd里编译运行,搞清楚java的文件结构,还有怎么设置编译器查找类的路径。首先是javac,有一个可带参数javac -d 后面是存放生成class的目录,默认是配置的环境变量classpath。先写一个java小程序看图:

  

首先,打开cmd,Test.java所在的目录是E:\,看看我们设置的classpath是什么在cmd里输入 set classpath,会显示看下图:

用白色线圈起来的,使我们要关注的,后面2个是java的库类,这里classpath=. 这个点的意思就是表示当前目录,意思是说,当我们在cmd里输入javac Test.java的时候jvm会查找当前所在目录看有没有Test.java,我们试一试,问题来了,什么是当前目录,这里的当前目录是黄色圈圈里的路径,显然我们的Test.java 是在E盘呢。那么先到E盘。然后输入javac Test.java编译

没有错误,会生成一个Test.class文件。那么问题来了这个文件生成的目录在那里呢,前面说过javac可以一指定类生成的目录用参数-d就可以了,如果不指定默认的就是当面目录了,还知道什么是当前目录吧。我们来设定一下生成到另外的地方。

这里D:与D:\结果都一样。这样我们就在指定的位置生成了编译后的类文件。然后是运行这个类用java指令。看结果:

直接输入java Test可以运行是因为我们在e:\生成了一个Test.class。所以jvm在默认的情况下会先搜索当前目录看有没有这个类,我们在D盘也生成了一个Test.class,那么在e盘怎么指定这个路径呢。如果输入 java -help会有提示信息,我们用java -classpath可以指定这个路径:

注意白色地方是要空格的。

另外我们可以通过set classpath= 来直接设置classpath,这里就是所谓的绝对地址。

上面2个指令讨论完毕,另外是2个关键字import与package,import是导入别人的包,这package是给自己的类封包。那么一个类加了package之后路径有什么变化呢

看程序:

然后通用按照上面的指令编译,运行。

编译是ok的,但是运行错误。说是找不到类,明显是执行路径出问题了。而且肯定和这个package com.tt有关系了。package com.tt是告诉编译器我们的类在.\com\tt里。所以jvm在查找的时候会在当前目录下继续查找com\tt,但是显然e盘里没有这个东西。因为我们输入javac Test.java所产生的Test.class的地址就是E:\Test.class,而不是E:\com\tt\Test.java,这个问题就是文件实际的物理地址跟代码通知jvm的地址对不上号了。那么代码改不了。只能用javac指令来指定编译生成的目录了:

这里会在指定的目录下生成编译文件。

这里的 -d . 的意思是在当前目录下生成所以完整地址就是E:\com\tt,讲到这里,我突然有个疑问,当前目录是e:如果我们先编译一个在d盘的类并且指定编译生成类的地址呢

看看编译结果

执行路径也要改变,下面是在当前路径下与非当前路径下执行指令

注意com.oo.Test2 这里跟package指定的是一样的。

 

转载于:https://www.cnblogs.com/ashitaka/p/5247336.html

你可能感兴趣的文章
EOS生产区块:解析插件producer_plugin
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
python numpy sum函数用法
查看>>
php变量什么情况下加大括号{}
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
Java处理多人同时读写文件的文件锁处理
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
判断文本框输入的文字长度
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years
查看>>