java - 对于 提示信息为 unknown source的解决办法: jdk 替换jre, 编译时加上debug=true
访问量: 6910
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)