gpt4 book ai didi

java - 我需要在 Eclipse 项目中配置什么来修复不正确的 “The import XXX cannot be resolved”

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:34 26 4
gpt4 key购买 nike

我正在关注这个 Contract first using CXF教程。

一切进展顺利,包括使用 build-helper-maven-plugin 从 WSDL 生成源代码,但到了“实现服务”的时候,即移动生成的 RegistryResourceImpl。 java 到正常的源文件夹 src/main/java,Eclipse 开始提示一些符号(比如接口(interface) RegistryResource)没有被识别。

意识到正常的 src/main/java 文件夹被分配了一个不同的包名称,我只是在 RegistryResourceImpl.java 中添加了包的导入,其中 RegistryResource.java 属于:

import com.yourcompany.sample.ns.RegistryResource;

但 Eclipse 在其当前项目配置中似乎对 com.yourcompany.sample.ns 视而不见,不知道在哪里可以找到它。

我尝试在构建路径中找到一个选项以指向生成的源,但我尝试的所有方法都没有帮助。

我觉得我错过了一些非常微不足道的东西,但它是什么?

此外,m2e(Eclipse 的 Maven 插件)不应该已经自动处理了那种移动的实现文件吗?

更新(尝试@Patrick 建议的解决方案后):

  1. target/generated/src/main/java 不存在,但选中“创建新文件夹”框,我能够创建它。
  2. 但是,在 pom.xml > Run As > Maven clean 后,它会被删除(因此需要在每次清理后重新创建???)
  3. 如果清理后不重新创建,则执行 pom.xml > Run As > Maven install,在完全不同的树下创建生成源:generated-sources/cxf/com/你的公司/ sample /ns。为什么???
  4. 然而,RegistryResourceImpl.java 模块仍然在target/generated sources 下自动创建。此时,我不再看到有关“未解析的包/导入/符号”(奇怪)的提示。
  5. 但是......一旦它被移动到非目标文件夹/包,即 src/main/java 下的 com.yourcompany.sample.ns,“import com .yourcompany.sample.ns.RegistryType;" 无法再次解析!

另一方面,如果我尝试将实际生成的路径添加为“源文件夹”generated-sources/cxf/com/yourcompany/sample/ns(而不是无关的/非-existent target/generated/src/main/java,将target下的生成树移动(删除)到/src/main/java下>. 我不明白 Eclipse 的这种行为。

最后,即使我执行 Maven > Update Project 建议 here ,从而摆脱了“Maven 2 项目错误图标”,RegistryResourceImpl.java 模块仍然显示未解析的符号,尽管整个项目构建得非常好!

什么可以解释这个?

build-helper-maven-plugin 是否可能不完整甚至损坏?

有没有办法让 CXF + build-helper-maven-plugin 与 Eclipse 和谐地工作,这样即使在项目构建时我也看不到那些令人不安的红色下划线“ Unresolved 符号”成功了吗?

最佳答案

您需要在 Eclipse 中为生成的源添加一个源文件夹。本教程在其评论中提到了这一点“注意:M2Eclipse 似乎没有选择此源文件夹,因此您必须在 Eclipse 中手动添加它。”如果您按照教程中的说明进行操作,则需要添加的位置应该是(相对于您的项目目录)

target/generated/src/main/java

要添加文件夹,请打开您的项目属性并从左侧菜单中选择“Java 构建路径”。在“源”选项卡中,按“添加文件夹...”按钮,然后选择“target/generated/src/main/java”作为源文件夹。

请注意 Maven 会在运行 mvn clean install 时删除生成的文件夹。您可能希望将 Eclipse 配置为在运行此命令时刷新资源,以避免不一致。 Eclipse 运行配置包括一个刷新选项卡,允许您启用“完成后刷新资源”。

您可能会考虑的另一个选择是为您的 wsimport 跳过使用 Maven需要。我会调用wsimport直接把生成的工件放到你的src/main/java文件夹下,就搞定了。除非您真的需要在每次构建时重新生成工件,否则我认为 Maven 插件的麻烦大于它的值(value)。

关于java - 我需要在 Eclipse 项目中配置什么来修复不正确的 “The import XXX cannot be resolved”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com