java 中的继承未检测到来自其他同名包的扩展 class
inheritance in java is not detecting extended class from other package, of same name
我正在使用 Eclipse。
2 个文件夹:src/test 和 src/main
两者都有同名的包:Academy
。
src/test中的Academy
包有一个class名称:Base.java
src/main中的Academy
包有一个class名称:HomePage.java
在HomePage.javaclass中,extends Base
没有检测到其中的碱基class。
这是HomePage.java
里面的代码
package Academy;
import Academy.Base;
public class HomePage extends Base{
}
Academy.Base
和 Base
上有一条红线。它告诉我们制作 Base
class,但它已经在那里了。我试图保存文件。我也尝试制作新项目。请帮忙。谢谢。
参考图片如下:
import
无关紧要。
您的 src/main/java/、src/main/resources/ 是为您的主要产品包装的,可能类似于 E2EProject1.jar。
你的 src/test/java/, src/test/resources/ 被打包在你的单元测试中,可能类似于 E2EProject1-test.jar。这些测试 classes 保留在您的主要产品之外,但是 class 路径上的主要产品作为依赖项。
所以它应该是这样的:
- src/main/java/Base.java
- src/test/resources/data.properties(或src/main/resources/)
包命名相同是为了能够测试(隐式导入)non-public,包私有 classes of src/main/java in unit test classes在 src/test/java.
您正在使用 Maven 作为 Eclipse 项目的构建系统。
Maven 不允许主树中的 class 依赖于测试树中的 class。它通过告诉 Java 编译器和运行时测试树中的 classes 和资源不在主代码的构建时间和运行时 class 路径中来防止这种情况发生。这就是您收到编译错误的原因。
解决方案:
将 Base.java
class 移至“src/main/java/Academy”目录。
您发表评论:
It's just 2 packages with same name, inside 2 different folders. whether it's test or not, it should still inherit with extends.
对不起...但你错了。 将 classes 放在哪棵树中很重要。这是一个 Maven 项目,Maven 对这些事情“有意见”。有充分的理由,海事组织。但无论哪种方式,Maven 的意见都优先……如果您选择使用 Maven。
还有一些其他问题:
包名称应以小写字母开头。例如阅读this。
解决方案:将 Academy
重命名为 academy
1.
Non-code 资源不应位于“java”目录中。 Non-code “java”源目录中的资源不会在运行时 classpath ... 中,也不会包含在(常规)JAR 文件中。
解决方案:创建一个“resources”目录并将其放在那里。
import Academy.Base;
是多余的。没有必要在同一个包中导入class。
1 - 替代解决方案:不要要求其他人处理您的代码,或帮助您完成它。如果其他人永远 不需要阅读您的代码,那么您只关心代码的外观。编译器不在乎。只有人类会。
按照以下步骤解决了上述错误:
右键项目->构建路径->配置构建路径->源选项卡
然后在你的项目下搜索tab搜索src/main/java
并将“包含测试源”从“否”更改为“是”
并应用更改
我正在使用 Eclipse。
2 个文件夹:src/test 和 src/main
两者都有同名的包:Academy
。
src/test中的Academy
包有一个class名称:Base.java
src/main中的Academy
包有一个class名称:HomePage.java
在HomePage.javaclass中,extends Base
没有检测到其中的碱基class。
这是HomePage.java
package Academy;
import Academy.Base;
public class HomePage extends Base{
}
Academy.Base
和 Base
上有一条红线。它告诉我们制作 Base
class,但它已经在那里了。我试图保存文件。我也尝试制作新项目。请帮忙。谢谢。
参考图片如下:
import
无关紧要。
您的 src/main/java/、src/main/resources/ 是为您的主要产品包装的,可能类似于 E2EProject1.jar。
你的 src/test/java/, src/test/resources/ 被打包在你的单元测试中,可能类似于 E2EProject1-test.jar。这些测试 classes 保留在您的主要产品之外,但是 class 路径上的主要产品作为依赖项。
所以它应该是这样的:
- src/main/java/Base.java
- src/test/resources/data.properties(或src/main/resources/)
包命名相同是为了能够测试(隐式导入)non-public,包私有 classes of src/main/java in unit test classes在 src/test/java.
您正在使用 Maven 作为 Eclipse 项目的构建系统。
Maven 不允许主树中的 class 依赖于测试树中的 class。它通过告诉 Java 编译器和运行时测试树中的 classes 和资源不在主代码的构建时间和运行时 class 路径中来防止这种情况发生。这就是您收到编译错误的原因。
解决方案:
将 Base.java
class 移至“src/main/java/Academy”目录。
您发表评论:
It's just 2 packages with same name, inside 2 different folders. whether it's test or not, it should still inherit with extends.
对不起...但你错了。 将 classes 放在哪棵树中很重要。这是一个 Maven 项目,Maven 对这些事情“有意见”。有充分的理由,海事组织。但无论哪种方式,Maven 的意见都优先……如果您选择使用 Maven。
还有一些其他问题:
包名称应以小写字母开头。例如阅读this。
解决方案:将
Academy
重命名为academy
1.Non-code 资源不应位于“java”目录中。 Non-code “java”源目录中的资源不会在运行时 classpath ... 中,也不会包含在(常规)JAR 文件中。
解决方案:创建一个“resources”目录并将其放在那里。
import Academy.Base;
是多余的。没有必要在同一个包中导入class。
1 - 替代解决方案:不要要求其他人处理您的代码,或帮助您完成它。如果其他人永远 不需要阅读您的代码,那么您只关心代码的外观。编译器不在乎。只有人类会。
按照以下步骤解决了上述错误:
右键项目->构建路径->配置构建路径->源选项卡
然后在你的项目下搜索tab搜索src/main/java
并将“包含测试源”从“否”更改为“是” 并应用更改