Unknown Source
来源:互联网 发布:mac 怎样储存文件 编辑:程序博客网 时间:2024/05/16 08:26
是否觉得下面的异常非常眼熟呢?
Exception in thread "main" java.lang.RuntimeException
at Test.main(Unknown Source)
当通过日志文件分析异常原因时,Unknown Source通常比较令人郁闷,郁闷程度与出错方法中行数成正比。
其实出现Unknown Source的原因是在编译时没有指定相应的选项,具体可以参见javac -g系列参数的帮助。当通过javac编译时,默认相当于指定-g:source,lines,这样编译出来的class文件中会包含源代码和行号信息;而通过ant编译时,默认相当于指定-g:none,这样编译出来的class文件会比较小,但是不包含任何调试信息,所以出错的时候就会打印出上面的错误堆栈信息。
如果要改变ant javac task的编译效果,可以更改其debug和debuglevel属性,参见:http://ant.apache.org/manual/CoreTasks/javac.html。
以下列出了用不同的-g参数编译同一java文件并运行的效果:
-g:none
Exception in thread "main" java.lang.RuntimeException
at Test.main(Unknown Source)
-g:source
Exception in thread "main" java.lang.RuntimeException
at Test.main(Test.java)
-g:source,lines
Exception in thread "main" java.lang.RuntimeException
at Test.main(Test.java:4)
-g:all 或 -g:source,lines,vars
运行效果等价于-g:source,lines,但是反编译生成的class文件,可以看到局部变量名也能正常的识别出应该根据程序的部署环境来更改编译参数,比如server端的代码应该加上-g:source,lines,以便通过日志文件正确分析。
最终原因是:javac 将源代码编译成class文件时采用的是 javac -g -g 生成所有调试信息 -g:none 不生成任何调试信息 -g:lines,vars,source} 只生成某些调试信息,ant中javac默认用 -g:none 这样编译的class文件会减小
- Unknown Source
- invoke - Unknown Source
- Log4j的Unknown Source问题
- ant javac Unknown Source 问题
- java.lang.reflect.Method.invoke(Unknown Source)
- oracle.ewt.lwawt.bufferedapplet. init unknown source
- sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
- Unknown Source的出现及解决
- ant javac参数及unknown source问题
- animation thread /nullPointerException / fill(unknown source)/ processing
- Unknown Source的出现及解决
- Myeclipse tomcat 部署项目Unknown Source异常
- 百度地图---SDKInitializer.initialize(Unknown Source)
- 异常java.lang.Thread.dumpStack(Unknown Source)
- source Insight unknown command or macro 解决办法
- Unknown Source的出现及解决
- at java.io.ObjectOutputStream.writeObject0(Unknown Source)
- at javax.swing.ImageIcon.<init>(Unknown Source)
- Linux USB
- menu.lst的写法
- 求职管理系统
- Office插件部署
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- Unknown Source
- 水晶报表之动态内容
- class的sizeof
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- asp.net upload httpmodule GetPreloadedEntityBody iis7
- Qt Object 类简介--Qt 类简介专题(二) 第一页
- C#识别U盘和盘符
- 典型的asp.net登陆验证代码
- Struts2拦截器(Interceptor)