java
(2015-07-01 20:25:26)
- 不用ide开发项目?听着很高端大气的样子啊。不过,不用ide用什么呢?
- 用javac/java命令啊。
- 这不明显是折腾自己吗?!
相信上面的场景大家都见过或听过,也相信有很多使用java一段时间后的人会偶然冒出一个想法————
平时开发时用惯了ide,其实却对java的编译过程一无所知,我能不能不用ide来开发?
想着想着就试了。笔者也是其中一员哦。
笔者假设各位已安装好jdk并配置好环境变量了。笔者的jdk版本是1.7。
新建一个文件夹来做实验吧。笔者建的是E:/dev-code/java/noide。以后就在noide文件夹下做实验了哦。
对文件夹名字的要求有二:
接下来,在noide文件夹下新建src文件夹,此文件夹将保存我们的java代码。在src下面建立文件夹层次为\test\billy\jee\noide\testtest\,在其下建立NoIDETest.java,内容为:
// NoIDETest.java文件开始
package test.billy.jee.noide.testtest;
public class NoIDETest{
}
// NoIDETest.java文件结束
· 最简单的编译运行
按windows+R打开运行对话框,输入cmd打开命令行窗口,输入e:并回车,然后输入命令cd dev-code\java\noide进入源文件文件夹,然后输入
javac src\test\billy\jee\noide\testtest\NoIDETest.java
会在NoIDETest.java文件夹下生成一个NoIDETest.class文件,再次输入命令cd src先进入src文件夹下,接着输入
java test.billy.jee.noide.testtest.NoIDETest
就能看到输出结果Hello, javac!
看,简单吧。可是我们并不总是希望(其实是“总是不希望”)生成的class文件和java文件在一起。行,那也能办。
· 在指定位置生成class文件
正常情况下我们不希望生成的class文件和java源文件在一起,这时候可以指定class文件的位置,使用-d选项就可以做到。
在NoIDETest文件夹下新建一个classes文件夹(以后生成的class文件就在这里了。),
同样输入e:并回车,然后输入命令
cd dev-code\java\noide
进入源文件文件夹,再输入
javac -d classes src\test\billy\jee\noide\testtest\NoIDETest.java
接着不要停,继续输入命令
cd classes以进入classes文件夹,再次输入
java test.billy.jee.noide.testtest.NoIDETest
也能看到输出结果Hello, javac!
也能成,不过这只是一个类的使用,下面我们演示“高级”一点的,不用一个类,改用——两个类,哈哈。
· 一个类调用另一个类
单个类编译明显没有意思,我们让它调用另一个类。接下来我们要做的就是建另外一个类,
同样进入NoIDETest跳到noide的src目录,然后依次建立com\billy\jee\noide\bean\文件夹[1],然后新建一个User.java文件,内容为
// User.java文件开始
package com.billy.jee.noide.bean;
public class User{
}
// User.java文件结束
User类是一个很简单的类,只有两个public属性和一个toString方法(属性用public修饰是因为我不想写set/get了),接着修改我们的NoIDETest.java
// NoIDETest.java文件开始
package test.billy.jee.noide.testtest;
import com.billy.jee.noide.bean.*;
public class NoIDETest{
}
// NoIDETest.java文件结束
下面就要开始我们的编译工作了。
因为在NoIDETest类中使用了User类,所以我们得先编译User类,再编译NoIDETest类。
在noide目录下输入命令
javac -d classes src\com\billy\jee\noide\testtest\User.java
即会将User.class生成在noide目录下的classes目录的相应位置,然后编译NoIDETest.java,不过这次得指定User.class的位置,输入命令
javac -d classes -cp classes src\test\billy\jee\noide\testtest\NoIDETest.java
此命令中有一个选项-cp(即-classpath)表示要指定依赖类的位置,
然后 cd classes 进入classes目录下,输入命令
java test.billy.jee.noide.testtest.NoIDETest
就能看到如下结果:
Hello, javac!
User [id=1,name=Billy]
功能是实现了,但每次修改类文件再输入命令也太蛋疼了吧,万一我的类文件很多呢,万一包名忘记引入了呢,万一书写一直有误呢……这些问题我们会接下来会慢慢解决,我们的目的不是抛弃ide,而是能在万一没有ide的时候不至于傻脸,仅此而已[2]。
文档就此结束了。欢迎指正~~
说明:
[1]:这个包和上个包的区别在于开头的com和test,所有的核心文件都在com下,测试用的类在test下,养成规范比较好。
[2]:不对,还能显示我们技术高超,哈哈。