java - 单独 jar 文件中的 Java 类的超类,显示为 Object
问题描述
我有一个名为 Passthru 的类,它扩展了一个名为 Component 的类,该类保存在一个 jar 文件中。在运行时,我想加载 Passthru(使用带有一个或多个 jar 文件的 URLClassLoader,以及可选的本地目录),然后针对几种可能性测试超类,其中一种是 Component。如果 Passthru 和 Component 都在同一个 jar 文件中,即使是不同的包,这也很有效,但如果 Passthru 位于本地目录中(jar 文件中包含 Component,如前所述),则在 Passthru 上执行 getSuperClass 将返回 Object。我知道 Object 在 Passthru 的父级树中,但在这种情况下,我似乎无法找到 Passthru 的直接父级。我想我可以去 Passthru 的源并扫描以找到超类,但应该有更简单的方法......?!
我还注意到,在这两种情况下,Passthru 都使用我的 URLClassLoader 加载,但是当 Passthru 在本地目录中时,它的父加载器显示为“原始”加载器(null)——不知道这是否相关......
解决了!!这是一个愚蠢的问题:原来目录中的源代码是后级的,并且与 jar 文件中的代码不匹配。另外,我没有将目录代码添加为 Eclipse 项目,因此显然 Eclipse 编译了此代码但没有给我任何错误指示,所以我没有看到“幕后”的编译错误。因此,当我纯粹在 jar 文件中工作时,一切正常,但是当我转到目录时,编译错误阻止了那里的类拾取 Component 类。感谢那些回答我问题的人——如果我浪费了你的时间,对不起!
解决方案
推荐阅读
- c++ - 使用向量的 C++ 二叉树
- hive - Hive 多个连接非常慢
- angularjs - Windows 10 中的 Reactjs/Angularjs 环境设置
- php - Codeigniter Ajax request With mysql Like query encoding string into characters
- android - Json Array in Volley Android
- php - Mysqli Select 查询无法正常工作
- java - I have to show the all values in lookup tables values as dropdown in UI I am using hibernate session query and I am storing in cache
- c# - Text alignment issue when using non-alphanumeric characters like Japanese, Chinese, Thai, etc
- android - ProgressBar 不起作用 - Android
- ios - how do I hide footer of all view controller witch attach with my navigation controller in swift project?