在linux命令行 下学习编写java
对于新手来讲, 使用eclipse 等IDE来学习java是最为方便和效率的. 学习Java能令程序猿深刻地理解面向对象的编程思想 .
但Java 是一个跨平台的编程语言. 本文介绍下在命令行下学习java 的一个方案.
当然, Linux下也有eclipse IDE, 但在命令下学习能让人更深刻地理解CLASSPATH env variable的概念, javac java 命令的使用. 在工作中, 很多大型项目java代码都必须在unix服务器上编译, 反正就是提供1个别的java 学习方案啦.
1. 编写代码
1.1 目录结构
很多Java初学者教材的例子都会利用javac 命令编译java文件, 把编译后的class文件生成到源代码的当前目录下.
但我建议应该一开始就应该把源代码目录和编译后class的目录分开.
下面是1个列子
gateman@TFPC ant_test $ tree
.
|-- build
| `-- classes
| `-- hello
| `-- ant
|-- build.xml
`-- src
`-- main
`-- hello
`-- ant
`-- HelloAnt.java
如上面的目录结构, ant_test是1个项目文件夹.
其中src/main 目录用来存放源代码文件
build/classes 就用来存放编译后的class 文件了, 跟eclipse生成的项目结构类似.
1.2 文本编辑器
在命令下文本编辑工具无非就是vim, emacs, nano 了...
个人建议用vim, 当然使用居有gui的gvim, gedit等会更方便, 这些文本编辑器也居然语法高亮功能, 但是文本补全没有eclipse等IDE强大, 不过我建议新手还是老实得1个1个字符自己敲好一点.
下面我在/src/main下新写了1个java文件 ./hello/ant/HelloAnt.java
package hello.ant;
public class HelloAnt{
public static void main(String[] args){
System.out.println("hello ant, it's the my meeting with ant!\n");
}
}
注意这个文件包含了包层次 hello.ant
2. 编译代码
可以一开始尝试使用javac 来编译源代码. 但是当你写的源代码文件越来越多, 互相引用的时候, 使用javac就可能要执行多次不太方便了, 当然可以类似c语言一样使用makefile.
我没利用过makefile来编译java项目, 不过我估计跟c语言makefile的写法是差不多的.
这里我介绍下1个更流向的java编译工具 ant. 本屌公司也是用ant来编译java的.
就利用上面的目录结构作为例子.
在项目文件夹的根目录下新建1个build.xml
<?xml version="1.0" encoding="GB2312" ?>
<!-- a project, maybe includes many groups of tasks(targets) -->
<project default="main" basedir=".">
<!-- one of the tasks(target) -->
<target name="main">
<!-- compile -->
<javac srcdir="src\main\hello\ant" destdir="build\classes">
<!-- run -->
<java classname="hello.ant.HelloAnt">
<classpath>
<pathelement path="build\classes"/>
</classpath>
</java>
</target>
</project>
其中上面的运行部分不添加也没所谓. 关键是compile的部分.
编写好build.xml后
在项目根目录下执行
ant -file build.xml 就可以编译了
gateman@TFPC ant_test $ ant -file build.xml
Buildfile: /media/store1/Studies/Java/java_start/ant_test/build.xml
main:
[javac] /media/store1/Studies/Java/java_start/ant_test/build.xml:10: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to /media/store1/Studies/Java/java_start/ant_test/build/classes
[java] hello ant, it's the my meeting with ant!
[java]
BUILD SUCCESSFUL
Total time: 1 second
如果在build.xml 添加了运行部分, ant还会在编译后执行一次. 如上面的输出.
3. 运行class文件
ant编译后, 会把生成的class文件放到build/classes目录下(根据build.xml的设置).
我们可以利用java命令来单独执行行生成后的class
建议先查看下$CLASSPATH 变量, 如果添加了当前目录"."的话就驱动哦啊
build/classes 下
执行 java hello.ant.HelloAnt
注意要把包层次补全了. 不如提示会找不到class
gateman@TFPC classes $ java hello.ant.HelloAnt
hello ant, it's the my meeting with ant!
如果想在其他目录执行那个class文件, 则必须利用-classpath 参数指定目录
如:
gateman@TFPC ant_test $ pwd
/home/gateman/Studies/Java/java_start/ant_test
gateman@TFPC ant_test $ java -classpath ./build/classes hello.ant.HelloAnt
hello ant, it's the my meeting with ant!
gateman@TFPC ant_test $
4. 调试class文件
安装了jdk后, 我们可以利用jdb来调试java编译后的class
跟gdb 一样, 使用jdb的前提是编译时加入调试信息, 也就是在javac 后面加上-g 参数.
如果使用ant编译的话, 则要在 build.xml的 <javac> 条目里添加两个属性: debug 和 debuglevel
<javac srcdir="src\main\hello\ant" destdir="build\classes" debug="on" debuglevel="lines,vars,source"/>
具体怎么使用这里就不详细讲了, 估计跟gdb差不多.
gateman@TFPC ant_test $ jdb -classpath ./build/classes hello.ant.HelloAnt
正在初始化jdb...
> run
运行hello.ant.HelloAnt
设置未捕获的java.lang.Throwable
设置延迟的未捕获的java.lang.Throwable
>
VM 已启动: hello ant, it's the my meeting with ant!
应用程序已退出
更多推荐
所有评论(0)