您的位置:首页 > 运维架构 > Linux

linux下编译、运行、调试java程序

2017-03-21 14:31 295 查看
一. 下载jdk5.0 for linux(现在应该有新版本了)
  到sun的主页 http://java.sun.com/j2se/1.5.0/download.jsp 下载jdk安装文件
二. 安装 java 环境:

  新建终端, 进入 jdk 存放目录, 执行:

    ./jdk-1_5_0-linux-i586-rpm.bin

    出现 jdk 的安装 licence, 把它看完后, 会问你是否同意安装, 键入 yes 回车安装.

  

  执行完后在当前目录中会存在 jdk-1_5_0-linux-i586-rpm 文件, 你可以用 ls 命令查看. 然后执行

    rpm -ivh jdk-1_5_0-linux-i586-rpm

    这样, jdk 默认安装到 /usr 目录中去了, 我这里是: /usr/java/jdk1.5.0
三. 需要配置的环境变量
  1. PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。
  2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们 需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
  3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到 并使用安装好的jdk。
四. 三种配置环境变量的方法
  1. 修改/etc/profile文件
    如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
    ·用文本编辑器打开/etc/profile

            vi /etc/profile
    ·在profile文件末尾加入:
      JAVA_HOME=/usr/share/jdk1.5.0_05

       PATH=$JAVA_HOME/bin:$PATH

       CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

       export JAVA_HOME

      export PATH

      export CLASSPATH
    ·重新登录

    ·注解

      a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录

      b. linux下用冒号“:”来分隔路径

      c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值

        在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种

         常见的错误。

      d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。

       e. export是把这三个变量导出为全局变量。

      f. 大小写必须严格区分。
  2. 修改.bashrc文件

    

    这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要 给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。
    ·用文本编辑器打开用户目录下的.bashrc文件

    ·在.bashrc文件末尾加入:

      

       set JAVA_HOME=/usr/share/jdk1.5.0_05

      export JAVA_HOME

       set PATH=$JAVA_HOME/bin:$PATH

               export PATH

               set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

               export CLASSPATH
    ·重新登录
  3. 直接在shell下设置变量
    不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。
    只需在shell终端执行下列命令:
    export JAVA_HOME=/usr/share/jdk1.5.0_05

    export PATH=$JAVA_HOME/bin:$PATH

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
五. 测试jdk
  1. 用文本编辑器新建一个Test.java文件,在其中输入以下代码并保存:
    public class test {

      public static void main(String args[]) {

        System.out.println("A new jdk test !");

      }

     }
  2. 编译:在shell终端执行命令 javac Test.java
  3. 运行:在shell终端执行命令 Java Test
    当shell下出现“A new jdk test !”字样则jdk运行正常。
六. 卸载jdk
  ·找到jdk安装目录的_uninst子目录

  ·在shell终端执行命令./uninstall.sh即可卸载jdk。

七、调试工具

一直在gdb 下调试c/c++程序。

突然要写个java程序,又不是很喜欢使用eclipse,那怎么调试程序呢。你还可以使用 jdb。

它是jdk 内置的一个java debug工具。类似与 gdb。不过功能稍弱,但也已经很值得敬佩了。

假如你的java源代码是 hello.java 文件。那么你需要编译的时候加上 -g 选项。这一点和 gdb 一致。怎么做?

javac -g hello.java

此时会生出一个 hello.class的文件。现在可以调试了。类似于 java命令一样,jdb也仅仅需要加上类名(不需要 .class)

jdb hello

加载成功后,我们通常会在 main函数的位置加上断点。怎么做?

stop in hello.main

如何查看被成功加入的断点?

clear

成功后,运行程序。

run

此时程序暂停到main函数的第一行

我们可以源代码

list

包含等号和大于号的行是当前即将执行的行。仅仅执行当前行,怎么做?

step

如果要查看某个变量的值比如变量 i的值。怎么做?

print i

dump i

eval i

如果你认为这个值是错的,比如它是1,可是你需要是2。如何修改它?

set i = 2

如何显示当前堆栈帧中的所有本地变量

locals

想要执行并跨过某个函数。怎么做?

next

想要一次只执行一个指令。怎么做?

stepi

这一点和gdb是一致的。

从当前位置直接执行到程序结束(或者下一个断点或信号)

cont

想要重复执行最后一个命令?

!!

将某个命令重复执行n次?

<n> <命令>

写出所有帮助

help

?

查看jdb的版本号

version
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java