Java 如何从sbt中发现定义类的库?
例如,我想从定义的类路径中发现哪个库声明了一个类,如ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP 任何像样的IDE都提供了一个功能,您可以在其中搜索此类类型(在Eclipse中查找类型),但如何在SBT中实现这一点呢?有什么任务/命令/插件可以帮我解决这个问题吗Java 如何从sbt中发现定义类的库?,java,scala,sbt,classpath,Java,Scala,Sbt,Classpath,例如,我想从定义的类路径中发现哪个库声明了一个类,如ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP 任何像样的IDE都提供了一个功能,您可以在其中搜索此类类型(在Eclipse中查找类型),但如何在SBT中实现这一点呢?有什么任务/命令/插件可以帮我解决这个问题吗 这样一个特性对于类冲突检测也很有用(如果多个JAR将定义同一个类):请参阅这个相关问题。我认为我知道的技术实际上并不奏效 正在进行分析(不起作用) 乍一看,这看起来很有用,但映射的方
这样一个特性对于类冲突检测也很有用(如果多个JAR将定义同一个类):请参阅这个相关问题。我认为我知道的技术实际上并不奏效 正在进行分析(不起作用) 乍一看,这看起来很有用,但映射的方向是从
文件
到字符串
,所以它实际上不是很有用
java反射机制
如果您可以获得类
,您可以执行以下操作:
scala> a.getClass.getClassLoader match { case ucl: java.net.URLClassLoader => ucl.getResource(a.getClass.getName.replace('.', '/') + ".class") }
res13: java.net.URL = jar:file:/Users/eugene/.conscript/boot/scala-2.10.5/org.scala-sbt/sbt/0.13.9-RC1/incremental-compiler-0.13.9-RC1.jar!/sbt/inc/MAnalysis.class
scala> a.getClass.getClassLoader match { case ucl: java.net.URLClassLoader => ucl.getResource(a.getClass.getName.replace('.', '/') + ".class") }
res13: java.net.URL = jar:file:/Users/eugene/.conscript/boot/scala-2.10.5/org.scala-sbt/sbt/0.13.9-RC1/incremental-compiler-0.13.9-RC1.jar!/sbt/inc/MAnalysis.class