Back

java - 对于 提示信息为 unknown source的解决办法: jdk 替换jre, 编译时加上debug=true

发布时间: 2017-08-09 02:43:00

refer to:  https://stackoverflow.com/questions/3132302/unknown-source-in-exception-stack-trace

昨天部署的一个java项目, 发现运行出错时,我的内心是完全懵逼的:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size:                                                                    4
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at com.las.controller.AnalysisTextFile.calcPlan(Unknown Source)
        at com.las.controller.AnalysisTextFile.dividePlanes(Unknown Source)
        at com.las.controller.AnalysisTextFile.analysis(Unknown Source)
        at com.las.controller.AnalysisTextFile.main(Unknown Source)

搜了一下,发现, 要求使用JDK,  因为使用JRE的话就会这样。 于是更改 %JAVA_HOME% 和 %PATH%.  

$ which java   # 会显示jdk路径。 

修改之后,发现有所改进, JDK自带的class可以看到了错误的代码行数:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
        at java.util.ArrayList.rangeCheck(ArrayList.java:653)
        at java.util.ArrayList.get(ArrayList.java:429)
        at com.las.controller.AnalysisTextFile.calcPlan(Unknown Source)

但是 自己写的代码,还没看到。  

所以,回到java项目, 看到 build.xml 这个打包文件,在 编译的任务下, 加上个属性:  debug=true 

然后重新编译,打包,就可以啦:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
        at java.util.ArrayList.rangeCheck(ArrayList.java:653)
        at java.util.ArrayList.get(ArrayList.java:429)
        at com.las.controller.AnalysisTextFile.calcPlan(AnalysisTextFile.java:246)
        at com.las.controller.AnalysisTextFile.dividePlanes(AnalysisTextFile.java:168)
        at com.las.controller.AnalysisTextFile.analysis(AnalysisTextFile.java:111)
        at com.las.controller.AnalysisTextFile.main(AnalysisTextFile.java:344)

Back