Java Reflection无法在我的系统上运行 - 为团队成员工作

时间:2009-11-19 06:04:53

标签: java reflection

我正在使用Java开展团队项目。一个要求是我们动态填充实现特定接口的所有类的下拉菜单。编译后可以添加新类。为实现这一目标,我们正在使用反射。

问题:我的系统上的所有下拉菜单都是空白的。我不能为我的生活弄清楚为什么他们没有人口。所有其他5名团队成员都在使用它们的系统。

我厌倦了不起作用的事情:

1)安装最近的日食(伽利略),因为休息团队正在使用它 2)重新安装最新的java版本(jdk1.6.0-17和jre6)
3)检查PATH和JAVA_HOME变量

关于我还能尝试什么或者我做过什么的任何想法应该解决它而不是?这让我发疯了。

编辑: 我应该更清楚我们正在团队中发展。我们使用SVN进行版本控制,我们都运行完全相同的源代码。我甚至尝试从SVN查看整张树的新副本,但是当我的系统对队友有效时,我遇到了相同的问题。

团队创建了一个可执行的jar,除了我的以外,每个人的系统运行良好。除了反射位之外,一切都适合我。

4 个答案:

答案 0 :(得分:6)

您需要调试您的应用程序。这意味着您必须系统地探索问题的可能原因。以下是我想到的一些事情:

  • 您的GUI可能会失败而不是反思吗?如果您使用System.out.println()而不是菜单输出该怎么办?

  • 您的反射代码是否会抛出异常,您是否忽略它?

  • 您的反射代码是否实际被调用?在那里投掷println()以确保!

  • 接口的测试是否遭受错误或类似错误导致其失败?尝试找到实现Serializable的类!

  • 您的反射测试是否在主线程中运行并尝试更新GUI?您需要使用SwingUtilities.invokeAndWait来获取Swing工作线程的更新。

  • 您正在使用Eclipse; Eclipse有一个很棒的调试器。在主要操作的位置附近设置断点,然后单步执行代码。

答案 1 :(得分:2)

PATHJAVA_HOME无济于事。 PATH仅影响动态链接库(“本机代码”)。 JAVA_HOME是一个脚本变量,恰好被一些基于Java的实用程序(如Ant和Tomcat)使用;它对Java运行时本身没有任何意义。

您需要调查类路径,它应该由-classpath命令的java选项指定,位于Eclipse项目的Build Path中属性,或者如果您使用Class-Path选项启动java,则在JAR文件主要部分的-jar属性中。

在代码中,您应该能够通过检查系统属性"java.class.path"

来列出类路径的内容。
System.out.println(System.getProperty("java.class.path"));

答案 2 :(得分:1)

问题解决方案:

导致源代码的类路径必须没有空格。

我正在运行Windows XP,无论出于何种原因,如果导致jar文件的类路径或使用反射的源代码中有任何空格,则反射失败。

我拿了一个适用于我团队其他成员的jar文件,并在我的系统上从C:\运行它,反射效果非常好。

我不知道为什么会这样,如果您知道发生了什么,请发表评论。

答案 3 :(得分:0)

可能是一个远景,但寻找你和你的队友的安全设置的差异。文章描述了更多细节http://www.ibm.com/developerworks/library/j-dyn0603/标题“安全和反思”

相关问题