了解Eclipse类路径声明

时间:2012-02-14 11:56:16

标签: java eclipse ant classpath ivy

我正在尝试理解Eclipse类路径文件,特别是,我想知道这个:

  1. JRE如何使用它(即JVM是直接读取这个xml文件,还是eclipse以某种方式将其提供给内部编译器)?

  2. 当我从IDE运行我的类时,如何解析复杂条目(如下面的常春藤路径)并将其合并到JVM ClassLoader中?

  3. 上下文:我有一个奇怪的错误,就是eclipse正在使用类的“错误”版本,而我的ivy / ant版本正在使用正确的版本,因此我想用Eclipse工具来更好地模仿使用的类加载器在我的纯粹构建中。为了做到这一点,我想我将不得不查看Eclipse项目/类路径文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="test"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
        <classpathentry kind="lib" path="conf"/>
        <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&amp;confs=*"/>
        <classpathentry kind="output" path="build"/>
    </classpath>
    

2 个答案:

答案 0 :(得分:10)

两件事:

1)项目类路径用于使用Eclipse Java Compiler(ejc)编译代码,因此文件信息将传递给EJC。

2)创建启动配置时,实际上是在声明运行应用程序的类路径,默认情况下,它基于项目类路径。此类路径作为参数传递给JVM,就像您手动执行一样(java -cp $ {classpathentries} yourmainclass)。如果要查找启动配置的类路径,请在调试模式下启动app / classes,然后在Debug视图中选择您的进程并单击Properties,您将看到完整的类路径(所有jar /作为参数传递给JVM的目录)

注意:我看不到你的常春藤路径。

答案 1 :(得分:0)

问题可能是:

这意味着在你的eclipse类路径中,你应该有两个不同版本的同一个类(两个不同版本的不同jar文件)。如果是这样,那么尝试删除一个。同样在你的eclipse构建路径中有一些名为&#34; Build Order&#34;您可以在其中指定类路径jar的顺序,尝试更改它。