β

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

申思维的站点/Siwei's site 197 阅读

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)
作者:申思维的站点/Siwei's site
我是申思维,从事于WEB 和移动app开发 熟悉js (coffeescript), CSS, HTML,跟web相关的服务器(apache, nginx, passenger, mongrel, t

发表评论