我正在使用 Java 开发一个团队项目。一个要求是我们动态填充实现特定接口(interface)的所有类的下拉菜单。编译后可以添加新类。为了实现这一点,我们使用反射。
问题:我的系统上的所有下拉菜单都是空白的。我一生都无法弄清楚为什么他们没有人口。所有其他 5 名团队成员都已在他们的系统上运行。
我厌倦但不起作用的事情:
1) 安装最新的 eclipse (galileo),因为其他团队正在使用它
2)重新安装最新的java版本(jdk1.6.0-17和jre6)
3)检查PATH和JAVA_HOME变量
关于我还可以尝试什么,或者我所做的事情是否应该解决它但没有解决,有什么想法吗?这让我发疯。
编辑: 我应该更清楚我们是在团队中发展。我们使用 SVN 进行版本控制,并且都运行完全相同的源代码。我什至尝试从 SVN 检查整个树的新副本,但当它为队友工作时,我的系统上的反射也遇到了同样的问题。
团队创建了一个可执行的 jar,它在除了我的系统之外的每个人的系统上都运行良好。除了反射位之外,一切都对我有用。
最佳答案
您需要调试您的应用程序。这意味着您必须系统地探索问题的可能原因。以下是我想到的一些事情:
您的 GUI 是否可能失败而不是反射失败?如果使用
System.out.println()
而不是菜单输出会怎样?您的反射代码是否抛出异常,您是否忽略它?
您的反射代码实际上被调用了吗?一定要在其中添加
println()
!接口(interface)测试是否存在拼写错误或类似错误导致失败?尝试查找实现
Serialized
的类!您的反射测试是否在主线程中运行并尝试更新您的 GUI?您需要使用
SwingUtilities.invokeAndWait
来获取 Swing 工作线程的更新。您正在使用 Eclipse; Eclipse 有一个非常棒的调试器。在主要操作所在位置附近设置一个断点,然后单步执行代码。
关于Java Reflect 无法在我的系统上工作 - 为团队成员工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761200/