Java跟Javac,package与import
今天讨论一下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指定的是一样的。
Java跟Javac,package与import的更多相关文章
- Java学习10——package和import
package和import语句 为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间,使用时,import引入相应package ...
- Java中的package和Import关键字的作用
一.package关键的作用 1.包的概念 package翻译为包,本质上就是一个文件夹,通过包组织项目结构的过程,就是通过包对应的文件夹管理.java和.class文件的过程. 2.包的作用 通过包 ...
- Java package和import语句
Java中的package和import语句 如果你想让其他人访问你的类,你一定要把你写的类放到正确的子目录下. 在Java里,对于位于包中的类是这样管理的: Java编译器把包对应于文件系统的目录管 ...
- package、import、java及javac的相关介绍(转)
Package: package中所存放的文件 所有文件,不过一般分一下就分这三种 1.java程序源文件,扩展名为.java: 2.编译好的java类文件,扩展名为.class: 3.其他文件,也称 ...
- java classpath import package 机制 @Java的ClassPath, Package和Jar
java classpath import package 机制 從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...
- JAVA中 package 和 import 的使用
1.打包--package 包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名.如果在类的定义之前没有使用package定义包名,那么该类就属于缺 省的包. 1.1 ...
- Java——package和import关键字
1.8 package和import关键字 1.8.1 package 包其实就是目录,特别是项目比较大,java 文件特别多的情况下,我们应该分目录管理,在java 中称为分包管理,包名称通常采用小 ...
- java的package和import机制
在说package.import机制前我们先来了解下java的CLASSPATH. CLASSPATH顾名思义就是class的路径,当我们在系统中运行某个java程序时,它就会告诉系统在这些地方寻找这 ...
- JAVA - package与import解析(一)
一.为什么要引入package和import?这个问题和c++中引入命名空间是一样的,也是为了解决重名问题.java通过包机制来解决重名问题,也就相当于给重名的代码加一系列前缀,从而达到唯一标识的作用 ...
随机推荐
- linux select 学习
一.select介绍 函数原型: #include <sys/select.h> int select(int maxfdp1, fd_set *restrict readfds, fd_ ...
- JMeter基于http请求的web接口性能测试总结
[本文出自天外归云的博客园] 基于http请求的web接口性能测试总结 压测的目的:对于Web接口压测的目的最终是要在对数据库造成压力的情况下观察压测服务器的cpu是否达到预警值.memory是否发生 ...
- install ios开发环境
环境搭建参照下边这个网址: http://itbbs.pconline.com.cn/soft/50602805.html
- C89标准库函数手册(待整理)
http://zh.cppreference.com/w/c 前言 ANSI C(C89)标准库函数共有15个头文件.这15个头文件分别为: 1.<assert.h> ...
- Cheatsheet: 2014 05.01 ~ 05.31
Web Choosing a Web Framework/Language Combo for the Next Decade Optimizing NGINX and PHP-fpm for hig ...
- node-webkit中使用sqlite3(MAC平台)
前言 最近使用node-webkit开发一款博客发布软件,来替换难用的Windows Live Writer(主要是对Markdown标签的支持很差劲).为了解决博文信息临时保存的问题,想到了使用sq ...
- CSS属性前的 -webkit, -moz,-ms,-o
-moz-对应 Firefox, -webkit-对应 Safari and Chrome-o- for Opera-ms- for Internet Explorer(microsoft) 在CSS ...
- [python]实现单机版一行wordcount
用过spark,对wordcount这个演示程序记忆犹新,于是想试着实现一个简单的wordcount.又因为在学习函数式编程,希望可以把数据看成一个整体,在现有的函数上进行操作.于是就有了这一行代码. ...
- hdu 3934&&poj 2079 (凸包+旋转卡壳+求最大三角形面积)
链接:http://poj.org/problem?id=2079 Triangle Time Limit: 3000MS Memory Limit: 30000K Total Submissio ...
- P2P小贷网站业务数据流程分享
P2P小贷网站业务数据流程分享 引言 这是去年年底开发的一个项目,完成后和用户的衔接没有很好的做起来,所以项目就搁浅了.9月以来,看各路P2P风声水起,很是热闹:这里分享下我的设计文档,算是抛砖引玉, ...