注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

饥民2011

一直在搬砖

 
 
 

日志

 
 
 
 

在linux命令行 下学习编写java  

2013-12-26 22:20:53|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

对于新手来讲, 使用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个列子

  1. gateman@TFPC ant_test $ tree  
  2. .  
  3. |-- build  
  4. |   `-- classes  
  5. |       `-- hello  
  6. |           `-- ant  
  7. |-- build.xml  
  8. `-- src  
  9.     `-- main  
  10.         `-- hello  
  11.             `-- ant  
  12.                 `-- 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

  1. package hello.ant;  
  2.   
  3. public class HelloAnt{  
  4.     public static void main(String[] args){  
  5.         System.out.println("hello ant, it's the my meeting with ant!\n");  
  6.     }  
  7. }  

注意这个文件包含了包层次 hello.ant


2. 编译代码

可以一开始尝试使用javac 来编译源代码. 但是当你写的源代码文件越来越多, 互相引用的时候, 使用javac就可能要执行多次不太方便了,  当然可以类似c语言一样使用makefile.


我没利用过makefile来编译java项目,  不过我估计跟c语言makefile的写法是差不多的.

这里我介绍下1个更流向的java编译工具 ant.   本屌公司也是用ant来编译java的.


就利用上面的目录结构作为例子.

在项目文件夹的根目录下新建1个build.xml

  1. <?xml version="1.0" encoding="GB2312" ?>  
  2.   
  3. <!-- a project, maybe includes many groups of tasks(targets) -->  
  4. <project default="main" basedir=".">  
  5.   
  6.     <!-- one of the tasks(target) -->  
  7.     <target name="main">  
  8.   
  9.         <!-- compile -->  
  10.         <javac srcdir="src\main\hello\ant" destdir="build\classes"/>  
  11.   
  12.         <!-- run -->  
  13.         <java classname="hello.ant.HelloAnt">  
  14.             <classpath>  
  15.                 <pathelement path="build\classes"/>  
  16.             </classpath>  
  17.         </java>  
  18.   
  19.     </target>  
  20.   
  21. </project>  



其中上面的运行部分不添加也没所谓.  关键是compile的部分.


编写好build.xml后

在项目根目录下执行

ant -file build.xml 就可以编译了

  1. gateman@TFPC ant_test $ ant -file build.xml   
  2. Buildfile: /media/store1/Studies/Java/java_start/ant_test/build.xml  
  3.   
  4. main:  
  5.     [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  
  6.     [javac] Compiling 1 source file to /media/store1/Studies/Java/java_start/ant_test/build/classes  
  7.      [java] hello ant, it's the my meeting with ant!  
  8.      [java]   
  9.   
  10. BUILD SUCCESSFUL  
  11. 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

  1. gateman@TFPC classes $ java hello.ant.HelloAnt  
  2. hello ant, it's the my meeting with ant!  

如果想在其他目录执行那个class文件, 则必须利用-classpath 参数指定目录

如:

  1. gateman@TFPC ant_test $ pwd  
  2. /home/gateman/Studies/Java/java_start/ant_test  
  3. gateman@TFPC ant_test $ java -classpath ./build/classes hello.ant.HelloAnt  
  4. hello ant, it's the my meeting with ant!  
  5.   
  6. gateman@TFPC ant_test $   



4. 调试class文件

安装了jdk后, 我们可以利用jdb来调试java编译后的class

具体怎么使用这里就不详细讲了, 估计跟gdb差不多.

  1. gateman@TFPC ant_test $ jdb -classpath ./build/classes hello.ant.HelloAnt  
  2. 正在初始化jdb...  
  3. > run  
  4. 运行hello.ant.HelloAnt  
  5. 设置未捕获的java.lang.Throwable  
  6. 设置延迟的未捕获的java.lang.Throwable  
  7. >   
  8. VM 已启动: hello ant, it's the my meeting with ant!  
  9.   
  10.   
  11. 应用程序已退出 
  评论这张
 
阅读(203)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017