【问题标题】:Maven + Delombok issue when compiling in Eclipse在 Eclipse 中编译时出现 Maven + Delombok 问题
【发布时间】:2011-07-03 22:00:03
【问题描述】:

我在 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
  • 龙目岛 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>

如果这个问题看起来微不足道,我深表歉意,但我已经寻找了几个小时的答案,但我开始陷入困境。

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

【问题讨论】:

  • 这是在 Linux、Windows 还是 OS X 中? (不幸的是,它有所作为)
  • 我在 Windows 上。明确一点:如果我使用命令提示符从根目录运行 mvn clean 包,一切正常。所以我认为问题出在某个地方的 Eclipse 设置中,但我真的不知道在哪里。
  • 我现在已经切换到lombok 0.10.0-RC1来解决另一个问题,但问题仍然存在。
  • 我试图完全删除对sun.jdk.tools的依赖,我得到完全相同的错误,这往往证明类路径中确实找不到该库。
  • 仅供参考:我已经在 Windows 和 Ubuntu 上运行了 Lombok 0.10.0-RC1 和 Maven 3 的组合,所以它可能的,所有这些都是值得的: -)

标签: java eclipse maven classpath lombok


【解决方案1】:

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

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

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

赢*:

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

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

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

【讨论】:

  • 我的 eclipse.ini 看起来像这样:-vm C:/Program Files/Java/jdk1.6.0_26/bin' -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx2048m -javaagent:lombok。 jar -Xbootclasspath/a:lombok.jar'
  • @Sébastien -vm 需要指向可执行文件,而不是目录。将 javaw.exe 添加到路径
  • 我做了更改,但不幸的是问题仍然存在
  • OK,打开任务管理器,找到你的eclipse任务,看看它是否使用了正确的javaw.exe。因为可能是 Eclipse.ini 阻塞了您的 java 路径(“程序文件”)中的空间。
  • 我已经杀死并重新启动 Eclipse 以确保没有“寄生虫”javaw.exe 正在运行。我重新启动 Eclipse 后唯一运行的 javaw.exe 位于“C:\Program Files\Java\jdk1.6.0_26\bin”;所以它似乎设法找到了正确的。
【解决方案2】:

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

【讨论】:

  • 我已经停止将 Lombok 与 maven 一起用于我的项目(一个或另一个),但是一旦我再次处于正确的配置中,我会尝试。
【解决方案3】:

在 Linux VM 上编译时,当源使用已安装的 Windows 共享时,我遇到了与 delombok 类似的问题。在我的情况下,问题是通过将存储库移动到 Linux VM 上的另一个位置,然后重新编译来解决的。

【讨论】:

    【解决方案4】:

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

    Lombok 还需要 javac 1.6 或更高版本

    【讨论】:

    • 是的,在开发过程中一切都很好。调用 Maven Builder 时显然会出现此问题。我将编辑原始帖子以添加轨迹。
    【解决方案5】:

    我昨天下午遇到了这个问题。我正在使用 Java 8、Eclipse 氧气、maven 3.5.2。

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

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

    -javaagent:lombok.jar

    我下载了1.16.18版本的Lombok jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      相关资源
      最近更新 更多