在Eclipse中编译时Maven + Delombok问题

时间:2011-07-03 22:00:04

标签: java eclipse maven classpath lombok

我在Eclipse中有一个使用lombok / delombok的maven项目。

当我使用maven脚本(例如mvn clean package)从Eclipse构建时,一切正常。

但是,当我直接从Eclipse运行时(比如我的项目的清理/构建),我有一个类路径问题,关于应该出现在JDK的tools.jar中的类。我已经尝试在我的项目构建路径中直接添加tools.jar,但没有任何成功。

[编辑]
堆栈跟踪是:

03/07/11 23:39:44 CEST: Maven Builder: FULL_BUILD   
03/07/11 23:39:44 CEST: [WARN] The POM for com.google.code.gwt-log:gwt-log:jar:3.1.2 is missing, no dependency information available  
03/07/11 23:39:44 CEST: Build errors for fiveorbs; org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.projectlombok:maven-lombok-plugin:0.9.3.1:delombok (default) on project fiveorbs: Execution default of goal org.projectlombok:maven-lombok-plugin:0.9.3.1:delombok failed: A required class was missing while executing org.projectlombok:maven-lombok-plugin:0.9.3.1:delombok: com/sun/tools/javac/util/Context  
-----------------------------------------------------
realm =    plugin>org.projectlombok:maven-lombok-plugin:0.9.3.1
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/C:/Users/Daedin/.m2/repository/org/projectlombok/maven-lombok-        plugin/0.9.3.1/maven-lombok-plugin-0.9.3.1.jar
urls[1] = file:/C:/Program%20Files/Java/jdk1.6.0_26/jre/../lib/tools.jar
urls[2] = file:/C:/Users/Daedin/.m2/repository/org/projectlombok/lombok/0.9.3/lombok-0.9.3.jar
urls[3] = file:/C:/Users/Daedin/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

[/编辑]

我的配置如下:

  • Eclipse 3.6 Helios
  • Maven 2.3
  • JDK 1.6
  • Lombok 0.9.3
  • Delombok maven插件0.9.3.1

包含delombok插件声明的pom.xml部分如下:

<plugin>
    <groupId>org.projectlombok</groupId>
    <artifactId>maven-lombok-plugin</artifactId>
    <version>0.9.3.1</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>delombok</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>sun.jdk</groupId>
            <artifactId>tools</artifactId>
            <version>1.6</version>
            <scope>system</scope>
            <systemPath>${java.home}/../lib/tools.jar</systemPath>
        </dependency>
    </dependencies>
</plugin>

如果这个问题看似微不足道,我道歉,但我一直在寻找一个小时的答案,而且我开始陷入困境。

提前感谢您提供的任何提示 - 如果我遗漏了任何有用的信息,请告诉我。

5 个答案:

答案 0 :(得分:2)

您需要确保使用JDK(而不是JRE)启动Eclipse。当然,在eclipse.ini中设置可执行文件的路径

在* x系统上(可能包括MacOS):

-vm /path/to/jdk/bin/javaw

on Win *:

-vm
C:\path to jdk\bin\javaw.exe

(需要在单独的行上,没有引号 - 请参阅https://wiki.eclipse.org/Eclipse.ini#-vm_value:_Windows_Example

要确定在哪个JVM Eclipse下启动,您可以使用Help-&gt; About,Installation Details,Configuration。然后查找-vm行。如果您看到多个-vm行,或者-Jm行指向JRE而不是JDK,请调整eclipse.ini然后重新启动Eclipse并对项目执行Maven-&gt;更新。

答案 1 :(得分:1)

我认为这个问题已在Lombok 0.10.0或更高版本中得到解决

答案 2 :(得分:1)

I had a similar issue with delombok when compiling on a Linux VM, when the source was using a mounted Windows share. In my case the problem was solved by moving the repository to another location exclusively on the Linux VM, then recompiling.

答案 3 :(得分:0)

您是否通过执行lombok.jar配置了Eclipse?

龙目岛也需要javac 1.6或更高版本

答案 4 :(得分:0)

昨天下午我有这个问题。我使用的是Java 8,Eclipse氧气,maven 3.5.2。

<强>解决方案: 通过从pom中删除Lombok依赖项并通过单独下载在构建路径中添加Lombok jar来解决该问题。

我还编辑了eclipse.ini并添加了以下内容:

-javaagent:lombok.jar

我下载了1.16.18版本的Lombok jar。