java 查看运行时某个类文件所在jar的位置
2017-08-24 11:12
417 查看
在一些大型项目中,项目所依赖的库可能比较到,有时候也会出现库冲突的情况,曾经遇到过一种情况:一个第三方云存储提供了一个sdk,这个sdk本身依赖httpclient相关的包,然而对方却把httpclient包中的部分代码复制到了sdk中,当项目中使用的httpclient版本与sdk中的版本一致时,没有任何问题,然而,当更新httpclient 至新版本的时候,问题出现了,出现了冲突,检查项目中使用的httpclient版本代码,没有任何问题,但是就是运行时报错,非常难以调试,甚至无法调试,这个时候,我们通常可以通过查找运行时出现冲突的地方时来自哪个jar包,java本身也有自带工具检查,简单代码如下:
运行结果可以看到:file:/D:/dev/m2/org/apache/httpcomponents/httpcore/4.4.1/httpcore-4.4.1.jar
但是,如果查看jdk中的类的时候,会出现空指针NPE异常:
CodeSource 为null, 有时候也可以使用-verbose来查看系统类的装载信息。
public static void main(String[] args) throws Exception { ProtectionDomain pd = ContentType.class.getProtectionDomain(); CodeSource cs = pd.getCodeSource(); System.out.println(cs.getLocation()); }
运行结果可以看到:file:/D:/dev/m2/org/apache/httpcomponents/httpcore/4.4.1/httpcore-4.4.1.jar
但是,如果查看jdk中的类的时候,会出现空指针NPE异常:
public static void main(String[] args) throws Exception { ProtectionDomain pd1 = List.class.getProtectionDomain(); CodeSource cs1 = pd1.getCodeSource(); System.out.println(cs1.getLocation()); }
CodeSource 为null, 有时候也可以使用-verbose来查看系统类的装载信息。
相关文章推荐
- 双击运行java jar文件
- 从任意位置运行Jar文件
- java 运行 无Manifist的jar 文件
- 加载依赖的jar包在命令行编译和运行java文件
- MyEclipse中为导入的jar包添加java原文件,可以直接查看java源码
- 运行java的jar文件
- 使不能运行的JAR文件可以使用java -jar运行
- web项目中jsp编译后的java文件所在位置
- java运行带有main方法的jar文件
- java项目生成"可运行jar"或"exe"的配置文件注意点
- java项目bat文件再运行时动态加载jar包
- 使不能运行的JAR文件可以使用java -jar运行
- jar 打包java class文件后,运行jar 出现 Failed to load Main-Class manifest attribute from 错误
- Tomcat将JSP转换为Servlet.java和编译.class文件的所在位置
- java运行jar文件或者含有jar包的文件(未完)
- Java通过class文件得到所在jar包
- java获取运行的jar(class)文件的路径
- Tomcat将JSP转换为Servlet.java和编译.class文件的所在位置
- JAVA获取文件本身所在的磁盘位置
- android工程中引入第三方JAR包后安装APK时老是提示找不到库文件 || Android如何将程序打成jar包 || 运行java.lang.noclassdeffounderror错误