|
|
1
4
我混合了@grodriguez和@bemase的答案,并添加了我自己的策略来制定出一个最佳解决方案。该解决方案在运行时模仿编译时可用的自动导入功能。 完整的代码 my solution is here . 给定一个简单的名称,主要步骤如下:
步骤2是容易的:
步骤1比较困难,并且依赖于您的应用程序/环境,因此我实施了各种策略来获取不同的包列表。 当前类加载器 (可能有助于检测动态生成的类)
类路径 (对于完全从类路径加载的应用程序来说已经足够好了。不适用于复杂的应用程序,如Eclipse)
引导程序类路径 (例如,Java.Lang.)
食束 (特定于域的包提供程序)
Eclipse环境中的查询和答案示例:
|
|
|
2
1
你可能根本做不到。JVM无法知道类
|
|
|
3
1
如果不加载它们,就可以获得ClassPath属性
然后您可以创建一个函数来搜索文件系统中那些位置的类。你必须对它进行编码,以便在JAR文件中进行搜索,有些类可能不会 事实上 由于只有在加载时才会显示不兼容,所以可以使用。但如果你只想对可用的东西有一个最好的猜测,这可能是可行的。也许你应该告诉我们 为什么? 你想这样做,这样你可以得到一些其他的建议? 编辑: 好的,听起来您应该检查这个线程和其中链接的线程: How do I read all classes from a Java package in the classpath? 特别是,Spring框架做了一些类似的事情,也许您可以查看该代码: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/core/io/support/PathMatchingResourcePatternResolver.html |
|
|
Raphael · 确定未能加载的类文件的路径 7 年前 |
|
|
Guest · 常量池和方法区域的映射 8 年前 |
|
|
flow2k · 解析扩展了接口并结束了一个潜在的无限循环 8 年前 |
|
|
Pneumono · 在运行时更改系统类加载器 9 年前 |
|
|
user3250354 · 使用Java类加载器获取堆栈跟踪 10 年前 |
|
|
DoNuT · 通过Classloader加载Maven工件 10 年前 |