2013-03-26 53 views
0

我在調試一些使用Map<Integer,...>的代碼,但我很難找到與各種Integer相關的值!這裏的一個最低工作例如:帶整數的JDB地圖查找

java代碼(保存到.\src):

import java.util.Map; 
import java.util.HashMap; 

public class Hello { 

    public static void main(String[] args) throws java.io.IOException { 
     Map<Integer,String> mymap = new HashMap<Integer,String>(2); 
     mymap.put(new Integer(5), "five"); 
     mymap.put(6, "six"); 
    } 
} 

終端1(的powershell):

javac -g $(ls . *.java -r -name) 
java -cp src -Xdebug '-Xrunjdwp:transport=dt_shmem,server=y,suspend=y,address=hey' Hello 

終端2(的powershell):

jdb -attach hey 

...

VM Started: No frames on the current call stack 

main[1] stop at Hello:10 
Deferring breakpoint Hello:10. 
It will be set after the class is loaded. 
main[1] cont 
> Set deferred breakpoint Hello:10 

Breakpoint hit: "thread=main", Hello.main(), line=10 bci=40 

main[1] dump mymap.get(5) 
com.sun.jdi.InvalidTypeException: Can't assign primitive value to object 
mymap.get(5) = null 
main[1] dump mymap.get(new Integer(5)) 
com.sun.tools.example.debug.expr.ParseException: No class named: Integer 
mymap.get(new Integer(5)) = null 
main[1] 

我該如何去查找Map<Integer,?>的值?

+2

這與http://stackoverflow.com/questions/14130892/why-jdb-wont-recognize-the-integer-class?rq=1 – 2013-03-26 16:07:00

+0

+1這是一個確切的副本 – 2013-03-26 16:08:25

+0

@AaronDigulla對於它的價值,我願意採取變通方法。他想找到'Integer'類;我不在乎那個班,但我想以任何可能的方式從我的地圖上查找。 – 2013-03-26 16:11:45

回答

1

使用完全合格的類名:

dump mymap.get(new java.lang.Integer(5)) 
0

雖然java語言允許使用java.lang中的類,就好像導入,但jdb不會。

dump mymap.get(new java.lang.Integer(5)) 

應該工作。