【问题标题】:Eclipse maven project package disorderEclipse maven项目包乱
【发布时间】:2016-10-18 03:33:32
【问题描述】:

Maven 项目通常组织为 src/main/java/somepackage,但有时我的 Eclipse 也会将 src/main/java 识别为包的一部分。如何解决这个问题? 在下图中,common 和 helloworld 都是 maven 项目,其中 common 组织正确但 helloworld 不是。

【问题讨论】:

    标签: eclipse maven


    【解决方案1】:

    src 目录是 Eclipse 存储源代码的默认目录,而在 Maven 中是src/main/java。最好检查.classpath 文件是否未被损坏或外部修改。它应该包含如下内容:

    <classpathentry kind="src" output="target/classes" path="src/main/java">
    

    【讨论】:

    • 太棒了。只是一件事,我一直认为 .class 文件不应该手动更改,应该在 eclipse 中有一些条目,比如项目属性或窗口首选项。
    • 你是对的:.classpath 文件不应该手动编辑。它的内容必须通过项目的Java Build Path/sources 窗口进行可视化编辑。但是文件有可能在外部被损坏或覆盖(可能是从源代码控制系统意外下载)。
    【解决方案2】:

    代码行
    package main.java.helloworld;
    在 helloworld 项目中会产生这个 package 层次结构:

    main
    `-+ java
      `-+ helloworld
    

    这真的是你的意思吗?
    在一个 maven 项目中,你有这个目录结构:

    src
    `-+ main
    |   `-+ java
    |   |   `-+ <here your packages and classes>
    |   '-+ resources
    |
    '-+ test
    |   `-+ java
    |   |   `-+ <here your test packages and classes>
    |   '-+ resources
    

    src/main/java(生产代码)和src/test/java(仅限测试)是包层次结构的根。如果您在test/java 中创建嵌套包com.enterprise 并在enterprise 中创建一个类Test,那么您必须在Test.java 中插入此包声明:
    package com.enterprise;

    看看你在 helloworld 项目中的目录和包结构。

    【讨论】:

    • 我有 maven 默认文件夹层次结构,src/main/java/helloworld/Foo.java 和 helloworld 是包。但是当将此 maven 项目导入 Eclipse 时,有时(并非总是)它将此 src/main/java 视为包的一部分,这一次(图中显示的 helloworld)eclipse 将 main/java/helloworld 视为包,并问我将包 helloworld 更改为包 main.java.helloworld。
    • 查看您问题中的第二个屏幕截图。你写了package main.java.helloworld;。这意味着您将mainjavahelloworld 声明为包。这对于eclipse来说是混淆和错误的,因为mainjava属于maven文件夹结构。
    • 那是eclipse自动修复。它是导入 helloworld;并出现错误:声明的包“helloworld”与预期的包“main.java.helloworld”不匹配
    • 打开文件资源管理器并查看目录结构的组织方式。我的建议:备份您的 Java 文件(具有正确的包结构)、POM.xml 并从磁盘中删除 eclipse 项目。然后新建一个eclipse项目。
    • 第一张图片来自项目资源管理器。我试过重新导入。我认为可能有一个配置指示 Eclipse 项目属性中的包。就是找不到。
    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 2011-10-13
    • 2015-02-09
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多