在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!


应用程序已退出




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值