2011-12-14 123 views
0

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

我所要做的就是更改.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> 

我收到的错误是:

The type edu.uci.ics.jung.graph.Graph cannot be resolved. It is indirectly referenced from required .class files 

如果我改变的路径之一,以“C:/工作/ thisWS/ThisProject/RES /例如,jung-algorithms-2.0.1.jar“错误消失。我点击撤消,直到文件恢复到初始状态并再次保存。没问题。

任何人都可以阐明这种行为吗?

+0

通常情况下,您只需将Jars添加到工作区(也许在文件夹中)。如果你喜欢,你可以从工作区建立一个链接到Jar文件(虽然这不会帮助你控制源代码)。如果他们在工作区中,则可以轻松引用它们。如果他们共享,你可以让Jars进入他们自己的项目并从那里引用他们。其中任何一个都会避免这个“相对文件参考”问题。 – 2011-12-14 07:47:49

回答

0

有一个很好的Maven集成我更新了Eclipse到最新版本,并且此问题已停止。我不确定是否还有其他事情参与其中,但我不能再复制它,所以我正在回答这个问题。

0

不是一个直接的答案,而是一个建议:如果不是所有的jar都存放在Maven存储库中,那么为什么不使用Maven来构建项目并让POM中的dependency mechanism做所有的努力工作为你? Eclipse通过m2eclipse plugin