Java Debug小技巧记录

来源:互联网 发布:安卓开发 必须学java 编辑:程序博客网 时间:2024/05/18 20:07

1.在进行Debug的时候,大家通常会有想要将某个方法的调用栈打出来分析一下的需求,那么Java中如何打印调用栈呢?

方法一:

    public void test() {

           ......

          try {

            throw new Exception("Debug");

          } catch(Exception e) {

            e.printStackTrace();

          }

           ......

    }

方法二:

    public void test() {

           ......

          new Exception("Debug").printStackTrace();

           ......

    }


持续补充...

2.ubuntu linux java版本切换 [转至http://www.bkjia.com/Linuxjc/898736.html]

在Ubuntu中,如果安装有多个Java版本时(有时候有些软件自行安装),怎样方便的进行切换呢。除了常见的设置环境变量外,今天学到了一种新的切换方法:

update-alternatives --config java
update-alternatives --config javac

另外,将自己的java版本如何安装:

sudo update-alternatives --install /usr/bin/java java /opt/jdk1.7.0_67/bin/java 50
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_67/bin/javac 50
sudo update-alternatives --install /usr/bin/javah javah /opt/jdk1.7.0_67/bin/javah 50
sudo update-alternatives --install /usr/bin/javaws javaws /opt/jdk1.7.0_67/bin/javaws 50
sudo update-alternatives --install /usr/bin/javap javap /opt/jdk1.7.0_67/bin/javap 50

----------------------------------------另一篇----------------------------------------

由于要在同一个Ubuntu环境下编译2.1和2.3两份代码,而他们所使用的java版本一个是1.5,一个是1.6,所以在编之前需要进行切换;

切换的方法很简单,使用下面的两个命令即可:

update-alternatives --config java
update-alternatives --config javac

例如:

root@www.bkjia.com:~# update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  选择      路径                                    优先级  状态
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-sun/jre/bin/java      63        自动模式
  1            /usr/lib/jvm/java-1.5.0-sun/jre/bin/java  53        手动模式
  2            /usr/lib/jvm/java-6-sun/jre/bin/java      63        手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:1
update-alternatives: 使用 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 来提供 /usr/bin/java (java),于 手动模式 中。

只要输入想要切换的编号回车即可,不改的话直接回车,别忘记javac也改一下~

改完之后,

java -version

javac -version

确认一下~

3.Java:Difference between Class.forName and ClassLoader.loadClass

   [摘录stackoverflow的原话]

    Class.forName() will always use the ClassLoader of the caller, whereas ClassLoader.loadClass() can specify a different ClassLoader.

   I believe that Class.forName initializes the loaded class as well, whereas the ClassLoader.loadClass() approach doesn't do that right

   away (it's not initialized until it's used for the first time).

   参考http://stackoverflow.com/questions/8345220/java-difference-between-class-forname-and-classloader-loadclass

0 0
原创粉丝点击