Java 无法解析类型-Eclipse中的相对路径与绝对路径

Java 无法解析类型-Eclipse中的相对路径与绝对路径,java,eclipse,classpath,Java,Eclipse,Classpath,我很难让eclipse很好地使用这个外部jar。如果我将其添加到构建路径中,它将引用其绝对路径并正常工作。如果我编辑.classpath文件以使用相对路径,它仍然可以正常工作。然而,如果我从头开始检查我的项目,它只能找到一个类 我所要做的就是更改.classpath文件中的任何一个路径并保存它,然后项目将一切连接起来。之后,我可以把它改回相对路径,一切都很好。我甚至不必更改这个有问题的类所在的jar的路径。就像Eclipse拒绝确认目录,直到它通过绝对路径被引用至少一次 这有什么意义吗?我对ec

我很难让eclipse很好地使用这个外部jar。如果我将其添加到构建路径中,它将引用其绝对路径并正常工作。如果我编辑.classpath文件以使用相对路径,它仍然可以正常工作。然而,如果我从头开始检查我的项目,它只能找到一个类

我所要做的就是更改.classpath文件中的任何一个路径并保存它,然后项目将一切连接起来。之后,我可以把它改回相对路径,一切都很好。我甚至不必更改这个有问题的类所在的jar的路径。就像Eclipse拒绝确认目录,直到它通过绝对路径被引用至少一次

这有什么意义吗?我对eclipse或项目构建不是很熟练,但我真的很想让这个项目达到这样的程度,即人们可以检查它并构建它,而不必做进一步的更改

下面是.classpath文件:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="res/twitter4j-core-2.2.5-SNAPSHOT.jar"/>
    <classpathentry kind="lib" path="res/twitter4j-stream-2.2.5-SNAPSHOT.jar"/>
    <classpathentry kind="lib" path="res/jung-algorithms-2.0.1.jar"/>
    <classpathentry kind="lib" path="res/jung-graph-impl-2.0.1.jar"/>
    <classpathentry kind="lib" path="res/jung-visualization-2.0.1.jar"/>
    <classpathentry kind="lib" path="res/collections-generic-4.01.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
例如,如果我将其中一个路径更改为C:/work/thisWS/ThisProject/res/jung-algorithms-2.0.1.jar,错误就会消失。我点击“撤消”,直到文件恢复到初始状态并再次保存。没问题


有人能解释一下这种行为吗?

这不是一个直接的答案,而是一个建议:如果不是所有的jar都在Maven存储库中,那么为什么不使用Maven来构建项目,让POM中的jar为您完成所有的艰苦工作呢?Eclipse通过

实现了很好的Maven集成,我将Eclipse更新为最新版本,这个问题就解决了。我不确定是否涉及其他内容,但我无法再复制它,因此我正在标记问题的答案。

通常您只需将jar添加到文件夹中的工作区中即可。如果愿意,您可以创建一个从工作区到Jar文件的链接,尽管这对源代码管理没有帮助。如果它们位于工作区中,则可以很容易地引用它们。如果它们是共享的,您可以让jar位于它们自己的项目中,并从那里引用它们。任何这些都可以避免这种相对文件引用问题。
The type edu.uci.ics.jung.graph.Graph cannot be resolved.  It is indirectly referenced from required .class files