繁体   English   中英

在非Maven项目中,如何在运行时查看java类路径上的类? [重复]

[英]How can I see the classes on the java classpath at runtime in a non-maven project? [duplicate]

这个问题已经在这里有了答案:

我有两个在Eclipse中声明相同依赖项的项目。 一组单元测试有效,而另一组无效。 我遇到错误, No tests matching [*methodname*] 一些谷歌搜索建议图书馆问题,但我无法确定可以在哪里引入这些问题。 这些项目几乎是相同的,并且测试框架(junit,powermock,mockito)应该相同。 在首选项中查看Java构建路径-> Java构建路径会显示相同的引用。 我怀疑蚀菜单不能反映运行时正在加载的实际类。 有没有办法在运行时回显类路径,以便我可以扫描它的重复项?

更新:根本的问题是我在类路径上有冲突的junit和powermock版本。 我能够通过从Eclipse构建路径配置面板中删除,重新添加和重新排序jar来解决此问题。 这是非常乏味的,下面公认的解决方案将大大减少解决时间。

这个问题被标记为重复,但是链接的文章特定于Maven,并且没有解决在运行时看到类路径的潜在问题。 公认的解决方案适用于Maven和非Maven项目。

有几种在运行时研究实际类路径的方法:

  • 使用-verbose:class运行JVM。 这将产生如下输出:

     [Loaded java.lang.Object from /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar] [Loaded java.io.Serializable from /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar] 
  • 在您的JVM中运行以下代码:

     ClassLoader classloader = ClassLoader.getSystemClassLoader(); URL[] urls = ((URLClassLoader) classloader).getURLs(); for (URL url : urls) { System.out.println(url.getFile()); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM