2016-05-28 33 views
1

我在classpath中添加了Lombok 1.12 jar文件,同时我在库中提供了Lombok 1.16 jar文件(同时在eclipse中配置构建路径)。 Eclipse无法识别lombok的一些注释,如@Builder(正在发出编译器错误)。 (也@Builder被列入主要Lombok1.12版)Eclipse中classpath和buildpath中的不同jar文件

后来我纠正在classpath中给Lombok 1.16 jar文件也。这次通过eclipse可以识别@Builder注解。现在一切正常。

这意味着将vm中的类路径与构建路径进行比较,并执行检查,无论二进制文件(lombok.jar)对于类路径和构建路径都是相同的。我的断言是否正确?请纠正我,如果我错误地解释这一点。

+0

在eclipse中,作为代理安装的jar用于代码生成。项目中的jar用于在项目中使用注释。代理使用不同的类路径。 –

+0

@RoelSpilker通过代码生成,你的意思是jvm将指令集保存在一个特定的lombok注释的地方,以便编译器可以从那里获取? – Ashley

+0

这是正确的。 –

回答

1

构建路径是一种类路径的超集,它包含类路径,源代码路径和依赖项目的所有资源。如果您有两个不同版本的JVM,JVM将从构建路径中第一个的jar中加载类。这可以通过编辑(构建路径 - >配置构建路径 - >导出顺序)进行管理。如果所需的类在第一个版本中不可用,它将检查第二版jar。如果它根本找不到,那么编译错误将被抛出

+0

感谢您的回答。你能否给我提供一些你给出的解释的链接,以便我可以确定? – Ashley

+0

http://stackoverflow.com/questions/3529459/what-is-the-difference-between-class-path-and-build-path –

+0

http://stackoverflow.com/questions/6105124/java-classpath-classloading -multiple-versions-the-same-jar-project –

0

在eclipse中,如果两个jar都在构建路径中,一个你想引用给它优先顺序,使其顶部 - 建立路径最后一个选项卡或你可以脱开你不想引用的较低版本。

+0

我没有在构建路径中给出两个不同的版本。我为buildpath和classpath提供了不同版本的jar。 Eclipse显示我编译器错误。尽管构建路径仅包含正确的版本。它是包含错误版本的类路径。 @smruti答案不符合我的问题。 jvm如何解决这个冲突? – Ashley

相关问题